Loading res/layout/launcher_preview_two_panel_layout.xml 0 → 100644 +57 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2018 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <view class="com.android.launcher3.graphics.LauncherPreviewRenderer$LauncherPreviewLayout" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:launcher="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:focusable="false"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.android.launcher3.CellLayout android:id="@+id/workspace_left" android:layout_width="0dp" android:layout_height="0dp" android:theme="@style/HomeScreenElementTheme" launcher:containerType="workspace" launcher:layout_constraintStart_toStartOf="parent" launcher:layout_constraintTop_toTopOf="parent" launcher:layout_constraintEnd_toStartOf="@id/workspace" launcher:layout_constraintBottom_toBottomOf="parent" launcher:pageIndicator="@+id/page_indicator" /> <com.android.launcher3.CellLayout android:id="@+id/workspace" android:layout_width="0dp" android:layout_height="0dp" android:theme="@style/HomeScreenElementTheme" launcher:containerType="workspace" launcher:layout_constraintStart_toEndOf="@id/workspace_left" launcher:layout_constraintTop_toTopOf="parent" launcher:layout_constraintEnd_toEndOf="parent" launcher:layout_constraintBottom_toBottomOf="parent" launcher:pageIndicator="@+id/page_indicator" /> </androidx.constraintlayout.widget.ConstraintLayout> <include android:id="@+id/hotseat" layout="@layout/hotseat" /> </view> No newline at end of file robolectric_tests/src/com/android/launcher3/model/GridSizeMigrationTaskV2Test.java +3 −3 Original line number Diff line number Diff line Loading @@ -131,7 +131,7 @@ public class GridSizeMigrationTaskV2Test { mIdp.numDatabaseHotseatIcons); GridSizeMigrationTaskV2 task = new GridSizeMigrationTaskV2(mContext, mDb, srcReader, destReader, mIdp.numDatabaseHotseatIcons, new Point(mIdp.numColumns, mIdp.numRows)); task.migrate(); task.migrate(mIdp); // Check hotseat items Cursor c = mContext.getContentResolver().query(LauncherSettings.Favorites.CONTENT_URI, Loading Loading @@ -211,7 +211,7 @@ public class GridSizeMigrationTaskV2Test { mIdp.numDatabaseHotseatIcons); GridSizeMigrationTaskV2 task = new GridSizeMigrationTaskV2(mContext, mDb, srcReader, destReader, mIdp.numDatabaseHotseatIcons, new Point(mIdp.numColumns, mIdp.numRows)); task.migrate(); task.migrate(mIdp); // Check hotseat items Cursor c = mContext.getContentResolver().query(LauncherSettings.Favorites.CONTENT_URI, Loading Loading @@ -259,7 +259,7 @@ public class GridSizeMigrationTaskV2Test { mIdp.numDatabaseHotseatIcons); GridSizeMigrationTaskV2 task = new GridSizeMigrationTaskV2(mContext, mDb, srcReader, destReader, mIdp.numDatabaseHotseatIcons, new Point(mIdp.numColumns, mIdp.numRows)); task.migrate(); task.migrate(mIdp); // Check hotseat items Cursor c = mContext.getContentResolver().query(LauncherSettings.Favorites.CONTENT_URI, Loading src/com/android/launcher3/graphics/LauncherPreviewRenderer.java +28 −13 Original line number Diff line number Diff line Loading @@ -208,7 +208,7 @@ public class LauncherPreviewRenderer extends ContextWrapper private final LayoutInflater mHomeElementInflater; private final InsettableFrameLayout mRootView; private final Hotseat mHotseat; private final CellLayout mWorkspace; private final Map<Integer, CellLayout> mWorkspaceScreens = new HashMap<>(); private final AppWidgetHost mAppWidgetHost; private final SparseIntArray mWallpaperColorResources; Loading Loading @@ -254,19 +254,31 @@ public class LauncherPreviewRenderer extends ContextWrapper new ContextThemeWrapper(this, R.style.HomeScreenElementTheme)); mHomeElementInflater.setFactory2(this); int layoutRes = mDp.isTwoPanels ? R.layout.launcher_preview_two_panel_layout : R.layout.launcher_preview_layout; mRootView = (InsettableFrameLayout) mHomeElementInflater.inflate( R.layout.launcher_preview_layout, null, false); layoutRes, null, false); mRootView.setInsets(mInsets); measureView(mRootView, mDp.widthPx, mDp.heightPx); mHotseat = mRootView.findViewById(R.id.hotseat); mHotseat.resetLayout(false); mWorkspace = mRootView.findViewById(R.id.workspace); mWorkspace.setPadding(mDp.workspacePadding.left + mDp.cellLayoutPaddingLeftRightPx, if (mDp.isTwoPanels) { CellLayout leftPanel = mRootView.findViewById(R.id.workspace_left); leftPanel.setPadding(mDp.workspacePadding.left + mDp.cellLayoutPaddingLeftRightPx, mDp.workspacePadding.top, mDp.workspacePadding.right + mDp.cellLayoutPaddingLeftRightPx, mDp.workspacePadding.bottom); mWorkspaceScreens.put(LEFT_PANEL_ID, leftPanel); } CellLayout firstScreen = mRootView.findViewById(R.id.workspace); firstScreen.setPadding(mDp.workspacePadding.left + mDp.cellLayoutPaddingLeftRightPx, mDp.workspacePadding.top, mDp.workspacePadding.right + mDp.cellLayoutPaddingLeftRightPx, mDp.workspacePadding.bottom); mWorkspaceScreens.put(FIRST_SCREEN_ID, firstScreen); if (FeatureFlags.WIDGETS_IN_LAUNCHER_PREVIEW.get()) { mAppWidgetHost = new LauncherPreviewAppWidgetHost(context); Loading Loading @@ -335,18 +347,20 @@ public class LauncherPreviewRenderer extends ContextWrapper @Override public CellLayout getScreenWithId(int screenId) { return mWorkspace; return mWorkspaceScreens.get(screenId); } private void inflateAndAddIcon(WorkspaceItemInfo info) { CellLayout screen = mWorkspaceScreens.get(info.screenId); BubbleTextView icon = (BubbleTextView) mHomeElementInflater.inflate( R.layout.app_icon, mWorkspace, false); R.layout.app_icon, screen, false); icon.applyFromWorkspaceItem(info); addInScreenFromBind(icon, info); } private void inflateAndAddFolder(FolderInfo info) { FolderIcon folderIcon = FolderIcon.inflateIcon(R.layout.folder_icon, this, mWorkspace, CellLayout screen = mWorkspaceScreens.get(info.screenId); FolderIcon folderIcon = FolderIcon.inflateIcon(R.layout.folder_icon, this, screen, info); addInScreenFromBind(folderIcon, info); } Loading Loading @@ -396,7 +410,8 @@ public class LauncherPreviewRenderer extends ContextWrapper } private void inflateAndAddPredictedIcon(WorkspaceItemInfo info) { View view = PredictedAppIconInflater.inflate(mHomeElementInflater, mWorkspace, info); CellLayout screen = mWorkspaceScreens.get(info.screenId); View view = PredictedAppIconInflater.inflate(mHomeElementInflater, screen, info); if (view != null) { addInScreenFromBind(view, info); } Loading Loading @@ -428,8 +443,7 @@ public class LauncherPreviewRenderer extends ContextWrapper ArrayList<LauncherAppWidgetInfo> currentAppWidgets = new ArrayList<>(); ArrayList<LauncherAppWidgetInfo> otherAppWidgets = new ArrayList<>(); IntSet currentScreenIds = IntSet.wrap(0); // TODO(b/185508060): support two panel preview. IntSet currentScreenIds = IntSet.wrap(mWorkspaceScreens.keySet()); filterCurrentWorkspaceItems(currentScreenIds, dataModel.workspaceItems, currentWorkspaceItems, otherWorkspaceItems); filterCurrentWorkspaceItems(currentScreenIds, dataModel.appWidgets, currentAppWidgets, Loading Loading @@ -487,12 +501,13 @@ public class LauncherPreviewRenderer extends ContextWrapper // Add first page QSB if (FeatureFlags.QSB_ON_FIRST_SCREEN) { CellLayout firstScreen = mWorkspaceScreens.get(FIRST_SCREEN_ID); View qsb = mHomeElementInflater.inflate( R.layout.search_container_workspace, mWorkspace, false); R.layout.search_container_workspace, firstScreen, false); CellLayout.LayoutParams lp = new CellLayout.LayoutParams(0, 0, mWorkspace.getCountX(), 1); new CellLayout.LayoutParams(0, 0, firstScreen.getCountX(), 1); lp.canReorder = false; mWorkspace.addViewToCellLayout(qsb, 0, R.id.search_container_workspace, lp, true); firstScreen.addViewToCellLayout(qsb, 0, R.id.search_container_workspace, lp, true); } measureView(mRootView, mDp.widthPx, mDp.heightPx); Loading src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java +11 −3 Original line number Diff line number Diff line Loading @@ -38,11 +38,13 @@ import android.view.animation.AccelerateDecelerateInterpolator; import androidx.annotation.UiThread; import androidx.annotation.WorkerThread; import com.android.launcher3.DeviceProfile; import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherSettings; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.Workspace; import com.android.launcher3.graphics.LauncherPreviewRenderer.PreviewContext; import com.android.launcher3.model.BgDataModel; import com.android.launcher3.model.GridSizeMigrationTask; Loading Loading @@ -163,11 +165,17 @@ public class PreviewSurfaceRenderer { @Override public void run() { DeviceProfile deviceProfile = mIdp.getDeviceProfile(mContext); String query = (deviceProfile.isTwoPanels ? LauncherSettings.Favorites.SCREEN + " = " + Workspace.LEFT_PANEL_ID + " or " : "") + LauncherSettings.Favorites.SCREEN + " = " + Workspace.FIRST_SCREEN_ID + " or " + LauncherSettings.Favorites.CONTAINER + " = " + LauncherSettings.Favorites.CONTAINER_HOTSEAT; loadWorkspace(new ArrayList<>(), LauncherSettings.Favorites.PREVIEW_CONTENT_URI, LauncherSettings.Favorites.SCREEN + " = 0 or " + LauncherSettings.Favorites.CONTAINER + " = " + LauncherSettings.Favorites.CONTAINER_HOTSEAT); query); MAIN_EXECUTOR.execute(() -> { mBgDataModel.isLeftPanelShown = deviceProfile.isTwoPanels; renderView(previewContext, mBgDataModel, mWidgetProvidersMap); mOnDestroyCallbacks.add(previewContext::onDestroy); }); Loading src/com/android/launcher3/model/GridSizeMigrationTaskV2.java +15 −2 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherSettings; import com.android.launcher3.Utilities; import com.android.launcher3.Workspace; import com.android.launcher3.graphics.LauncherPreviewRenderer; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.pm.InstallSessionHelper; Loading Loading @@ -183,7 +184,7 @@ public class GridSizeMigrationTaskV2 { Point targetSize = new Point(idp.numColumns, idp.numRows); GridSizeMigrationTaskV2 task = new GridSizeMigrationTaskV2(context, t.getDb(), srcReader, destReader, idp.numDatabaseHotseatIcons, targetSize); task.migrate(); task.migrate(idp); if (!migrateForPreview) { dropTable(t.getDb(), LauncherSettings.Favorites.TMP_TABLE); Loading @@ -210,7 +211,7 @@ public class GridSizeMigrationTaskV2 { } @VisibleForTesting protected boolean migrate() { protected boolean migrate(InvariantDeviceProfile idp) { if (mHotseatDiff.isEmpty() && mWorkspaceDiff.isEmpty()) { return false; } Loading @@ -224,7 +225,17 @@ public class GridSizeMigrationTaskV2 { Collections.sort(mWorkspaceDiff); // Migrate workspace. // First we create a collection of the screens List<Integer> screens = new ArrayList<>(); if (idp.getDeviceProfile(mContext).isTwoPanels) { screens.add(Workspace.LEFT_PANEL_ID); } for (int screenId = 0; screenId <= mDestReader.mLastScreenId; screenId++) { screens.add(screenId); } // Then we place the items on the screens for (int screenId : screens) { if (DEBUG) { Log.d(TAG, "Migrating " + screenId); } Loading @@ -236,6 +247,8 @@ public class GridSizeMigrationTaskV2 { } } // In case the new grid is smaller, there might be some leftover items that don't fit on // any of the screens, in this case we add them to new screens until all of them are placed. int screenId = mDestReader.mLastScreenId + 1; while (!mWorkspaceDiff.isEmpty()) { GridPlacementSolution workspaceSolution = new GridPlacementSolution(mDb, mSrcReader, Loading Loading
res/layout/launcher_preview_two_panel_layout.xml 0 → 100644 +57 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2018 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <view class="com.android.launcher3.graphics.LauncherPreviewRenderer$LauncherPreviewLayout" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:launcher="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:focusable="false"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.android.launcher3.CellLayout android:id="@+id/workspace_left" android:layout_width="0dp" android:layout_height="0dp" android:theme="@style/HomeScreenElementTheme" launcher:containerType="workspace" launcher:layout_constraintStart_toStartOf="parent" launcher:layout_constraintTop_toTopOf="parent" launcher:layout_constraintEnd_toStartOf="@id/workspace" launcher:layout_constraintBottom_toBottomOf="parent" launcher:pageIndicator="@+id/page_indicator" /> <com.android.launcher3.CellLayout android:id="@+id/workspace" android:layout_width="0dp" android:layout_height="0dp" android:theme="@style/HomeScreenElementTheme" launcher:containerType="workspace" launcher:layout_constraintStart_toEndOf="@id/workspace_left" launcher:layout_constraintTop_toTopOf="parent" launcher:layout_constraintEnd_toEndOf="parent" launcher:layout_constraintBottom_toBottomOf="parent" launcher:pageIndicator="@+id/page_indicator" /> </androidx.constraintlayout.widget.ConstraintLayout> <include android:id="@+id/hotseat" layout="@layout/hotseat" /> </view> No newline at end of file
robolectric_tests/src/com/android/launcher3/model/GridSizeMigrationTaskV2Test.java +3 −3 Original line number Diff line number Diff line Loading @@ -131,7 +131,7 @@ public class GridSizeMigrationTaskV2Test { mIdp.numDatabaseHotseatIcons); GridSizeMigrationTaskV2 task = new GridSizeMigrationTaskV2(mContext, mDb, srcReader, destReader, mIdp.numDatabaseHotseatIcons, new Point(mIdp.numColumns, mIdp.numRows)); task.migrate(); task.migrate(mIdp); // Check hotseat items Cursor c = mContext.getContentResolver().query(LauncherSettings.Favorites.CONTENT_URI, Loading Loading @@ -211,7 +211,7 @@ public class GridSizeMigrationTaskV2Test { mIdp.numDatabaseHotseatIcons); GridSizeMigrationTaskV2 task = new GridSizeMigrationTaskV2(mContext, mDb, srcReader, destReader, mIdp.numDatabaseHotseatIcons, new Point(mIdp.numColumns, mIdp.numRows)); task.migrate(); task.migrate(mIdp); // Check hotseat items Cursor c = mContext.getContentResolver().query(LauncherSettings.Favorites.CONTENT_URI, Loading Loading @@ -259,7 +259,7 @@ public class GridSizeMigrationTaskV2Test { mIdp.numDatabaseHotseatIcons); GridSizeMigrationTaskV2 task = new GridSizeMigrationTaskV2(mContext, mDb, srcReader, destReader, mIdp.numDatabaseHotseatIcons, new Point(mIdp.numColumns, mIdp.numRows)); task.migrate(); task.migrate(mIdp); // Check hotseat items Cursor c = mContext.getContentResolver().query(LauncherSettings.Favorites.CONTENT_URI, Loading
src/com/android/launcher3/graphics/LauncherPreviewRenderer.java +28 −13 Original line number Diff line number Diff line Loading @@ -208,7 +208,7 @@ public class LauncherPreviewRenderer extends ContextWrapper private final LayoutInflater mHomeElementInflater; private final InsettableFrameLayout mRootView; private final Hotseat mHotseat; private final CellLayout mWorkspace; private final Map<Integer, CellLayout> mWorkspaceScreens = new HashMap<>(); private final AppWidgetHost mAppWidgetHost; private final SparseIntArray mWallpaperColorResources; Loading Loading @@ -254,19 +254,31 @@ public class LauncherPreviewRenderer extends ContextWrapper new ContextThemeWrapper(this, R.style.HomeScreenElementTheme)); mHomeElementInflater.setFactory2(this); int layoutRes = mDp.isTwoPanels ? R.layout.launcher_preview_two_panel_layout : R.layout.launcher_preview_layout; mRootView = (InsettableFrameLayout) mHomeElementInflater.inflate( R.layout.launcher_preview_layout, null, false); layoutRes, null, false); mRootView.setInsets(mInsets); measureView(mRootView, mDp.widthPx, mDp.heightPx); mHotseat = mRootView.findViewById(R.id.hotseat); mHotseat.resetLayout(false); mWorkspace = mRootView.findViewById(R.id.workspace); mWorkspace.setPadding(mDp.workspacePadding.left + mDp.cellLayoutPaddingLeftRightPx, if (mDp.isTwoPanels) { CellLayout leftPanel = mRootView.findViewById(R.id.workspace_left); leftPanel.setPadding(mDp.workspacePadding.left + mDp.cellLayoutPaddingLeftRightPx, mDp.workspacePadding.top, mDp.workspacePadding.right + mDp.cellLayoutPaddingLeftRightPx, mDp.workspacePadding.bottom); mWorkspaceScreens.put(LEFT_PANEL_ID, leftPanel); } CellLayout firstScreen = mRootView.findViewById(R.id.workspace); firstScreen.setPadding(mDp.workspacePadding.left + mDp.cellLayoutPaddingLeftRightPx, mDp.workspacePadding.top, mDp.workspacePadding.right + mDp.cellLayoutPaddingLeftRightPx, mDp.workspacePadding.bottom); mWorkspaceScreens.put(FIRST_SCREEN_ID, firstScreen); if (FeatureFlags.WIDGETS_IN_LAUNCHER_PREVIEW.get()) { mAppWidgetHost = new LauncherPreviewAppWidgetHost(context); Loading Loading @@ -335,18 +347,20 @@ public class LauncherPreviewRenderer extends ContextWrapper @Override public CellLayout getScreenWithId(int screenId) { return mWorkspace; return mWorkspaceScreens.get(screenId); } private void inflateAndAddIcon(WorkspaceItemInfo info) { CellLayout screen = mWorkspaceScreens.get(info.screenId); BubbleTextView icon = (BubbleTextView) mHomeElementInflater.inflate( R.layout.app_icon, mWorkspace, false); R.layout.app_icon, screen, false); icon.applyFromWorkspaceItem(info); addInScreenFromBind(icon, info); } private void inflateAndAddFolder(FolderInfo info) { FolderIcon folderIcon = FolderIcon.inflateIcon(R.layout.folder_icon, this, mWorkspace, CellLayout screen = mWorkspaceScreens.get(info.screenId); FolderIcon folderIcon = FolderIcon.inflateIcon(R.layout.folder_icon, this, screen, info); addInScreenFromBind(folderIcon, info); } Loading Loading @@ -396,7 +410,8 @@ public class LauncherPreviewRenderer extends ContextWrapper } private void inflateAndAddPredictedIcon(WorkspaceItemInfo info) { View view = PredictedAppIconInflater.inflate(mHomeElementInflater, mWorkspace, info); CellLayout screen = mWorkspaceScreens.get(info.screenId); View view = PredictedAppIconInflater.inflate(mHomeElementInflater, screen, info); if (view != null) { addInScreenFromBind(view, info); } Loading Loading @@ -428,8 +443,7 @@ public class LauncherPreviewRenderer extends ContextWrapper ArrayList<LauncherAppWidgetInfo> currentAppWidgets = new ArrayList<>(); ArrayList<LauncherAppWidgetInfo> otherAppWidgets = new ArrayList<>(); IntSet currentScreenIds = IntSet.wrap(0); // TODO(b/185508060): support two panel preview. IntSet currentScreenIds = IntSet.wrap(mWorkspaceScreens.keySet()); filterCurrentWorkspaceItems(currentScreenIds, dataModel.workspaceItems, currentWorkspaceItems, otherWorkspaceItems); filterCurrentWorkspaceItems(currentScreenIds, dataModel.appWidgets, currentAppWidgets, Loading Loading @@ -487,12 +501,13 @@ public class LauncherPreviewRenderer extends ContextWrapper // Add first page QSB if (FeatureFlags.QSB_ON_FIRST_SCREEN) { CellLayout firstScreen = mWorkspaceScreens.get(FIRST_SCREEN_ID); View qsb = mHomeElementInflater.inflate( R.layout.search_container_workspace, mWorkspace, false); R.layout.search_container_workspace, firstScreen, false); CellLayout.LayoutParams lp = new CellLayout.LayoutParams(0, 0, mWorkspace.getCountX(), 1); new CellLayout.LayoutParams(0, 0, firstScreen.getCountX(), 1); lp.canReorder = false; mWorkspace.addViewToCellLayout(qsb, 0, R.id.search_container_workspace, lp, true); firstScreen.addViewToCellLayout(qsb, 0, R.id.search_container_workspace, lp, true); } measureView(mRootView, mDp.widthPx, mDp.heightPx); Loading
src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java +11 −3 Original line number Diff line number Diff line Loading @@ -38,11 +38,13 @@ import android.view.animation.AccelerateDecelerateInterpolator; import androidx.annotation.UiThread; import androidx.annotation.WorkerThread; import com.android.launcher3.DeviceProfile; import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherSettings; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.Workspace; import com.android.launcher3.graphics.LauncherPreviewRenderer.PreviewContext; import com.android.launcher3.model.BgDataModel; import com.android.launcher3.model.GridSizeMigrationTask; Loading Loading @@ -163,11 +165,17 @@ public class PreviewSurfaceRenderer { @Override public void run() { DeviceProfile deviceProfile = mIdp.getDeviceProfile(mContext); String query = (deviceProfile.isTwoPanels ? LauncherSettings.Favorites.SCREEN + " = " + Workspace.LEFT_PANEL_ID + " or " : "") + LauncherSettings.Favorites.SCREEN + " = " + Workspace.FIRST_SCREEN_ID + " or " + LauncherSettings.Favorites.CONTAINER + " = " + LauncherSettings.Favorites.CONTAINER_HOTSEAT; loadWorkspace(new ArrayList<>(), LauncherSettings.Favorites.PREVIEW_CONTENT_URI, LauncherSettings.Favorites.SCREEN + " = 0 or " + LauncherSettings.Favorites.CONTAINER + " = " + LauncherSettings.Favorites.CONTAINER_HOTSEAT); query); MAIN_EXECUTOR.execute(() -> { mBgDataModel.isLeftPanelShown = deviceProfile.isTwoPanels; renderView(previewContext, mBgDataModel, mWidgetProvidersMap); mOnDestroyCallbacks.add(previewContext::onDestroy); }); Loading
src/com/android/launcher3/model/GridSizeMigrationTaskV2.java +15 −2 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherSettings; import com.android.launcher3.Utilities; import com.android.launcher3.Workspace; import com.android.launcher3.graphics.LauncherPreviewRenderer; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.pm.InstallSessionHelper; Loading Loading @@ -183,7 +184,7 @@ public class GridSizeMigrationTaskV2 { Point targetSize = new Point(idp.numColumns, idp.numRows); GridSizeMigrationTaskV2 task = new GridSizeMigrationTaskV2(context, t.getDb(), srcReader, destReader, idp.numDatabaseHotseatIcons, targetSize); task.migrate(); task.migrate(idp); if (!migrateForPreview) { dropTable(t.getDb(), LauncherSettings.Favorites.TMP_TABLE); Loading @@ -210,7 +211,7 @@ public class GridSizeMigrationTaskV2 { } @VisibleForTesting protected boolean migrate() { protected boolean migrate(InvariantDeviceProfile idp) { if (mHotseatDiff.isEmpty() && mWorkspaceDiff.isEmpty()) { return false; } Loading @@ -224,7 +225,17 @@ public class GridSizeMigrationTaskV2 { Collections.sort(mWorkspaceDiff); // Migrate workspace. // First we create a collection of the screens List<Integer> screens = new ArrayList<>(); if (idp.getDeviceProfile(mContext).isTwoPanels) { screens.add(Workspace.LEFT_PANEL_ID); } for (int screenId = 0; screenId <= mDestReader.mLastScreenId; screenId++) { screens.add(screenId); } // Then we place the items on the screens for (int screenId : screens) { if (DEBUG) { Log.d(TAG, "Migrating " + screenId); } Loading @@ -236,6 +247,8 @@ public class GridSizeMigrationTaskV2 { } } // In case the new grid is smaller, there might be some leftover items that don't fit on // any of the screens, in this case we add them to new screens until all of them are placed. int screenId = mDestReader.mLastScreenId + 1; while (!mWorkspaceDiff.isEmpty()) { GridPlacementSolution workspaceSolution = new GridPlacementSolution(mDb, mSrcReader, Loading