Loading quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java +8 −7 Original line number Diff line number Diff line Loading @@ -18,8 +18,8 @@ package com.android.launcher3.model; import static android.text.format.DateUtils.DAY_IN_MILLIS; import static android.text.format.DateUtils.formatElapsedTime; import static com.android.launcher3.LauncherPrefs.nonRestorableItem; import static com.android.launcher3.EncryptionType.ENCRYPTED; import static com.android.launcher3.LauncherPrefs.nonRestorableItem; import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT_PREDICTION; import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_PREDICTION; import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_WIDGETS_PREDICTION; Loading Loading @@ -65,7 +65,7 @@ import com.android.launcher3.logging.InstanceId; import com.android.launcher3.logging.InstanceIdSequence; import com.android.launcher3.model.BgDataModel.FixedContainerItems; import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.model.data.FolderInfo; import com.android.launcher3.model.data.CollectionInfo; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.pm.UserCache; Loading Loading @@ -233,7 +233,7 @@ public class QuickstepModelDelegate extends ModelDelegate { } InstanceId instanceId = new InstanceIdSequence().newInstanceId(); for (ItemInfo info : itemsIdMap) { FolderInfo parent = getContainer(info, itemsIdMap); CollectionInfo parent = getContainer(info, itemsIdMap); StatsLogCompatManager.writeSnapshot(info.buildProto(parent), instanceId); } additionalSnapshotEvents(instanceId); Loading Loading @@ -270,7 +270,7 @@ public class QuickstepModelDelegate extends ModelDelegate { } for (ItemInfo info : itemsIdMap) { FolderInfo parent = getContainer(info, itemsIdMap); CollectionInfo parent = getContainer(info, itemsIdMap); LauncherAtom.ItemInfo itemInfo = info.buildProto(parent); Log.d(TAG, itemInfo.toString()); StatsEvent statsEvent = StatsLogCompatManager.buildStatsEvent(itemInfo, Loading @@ -293,18 +293,19 @@ public class QuickstepModelDelegate extends ModelDelegate { } } private static FolderInfo getContainer(ItemInfo info, IntSparseArrayMap<ItemInfo> itemsIdMap) { private static CollectionInfo getContainer( ItemInfo info, IntSparseArrayMap<ItemInfo> itemsIdMap) { if (info.container > 0) { ItemInfo containerInfo = itemsIdMap.get(info.container); if (!(containerInfo instanceof FolderInfo)) { if (!(containerInfo instanceof CollectionInfo)) { Log.e(TAG, String.format( "Item info: %s found with invalid container: %s", info, containerInfo)); } // Allow crash to help debug b/173838775 return (FolderInfo) containerInfo; return (CollectionInfo) containerInfo; } return null; } Loading quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +5 −4 Original line number Diff line number Diff line Loading @@ -89,6 +89,7 @@ import com.android.launcher3.folder.FolderIcon; import com.android.launcher3.logger.LauncherAtom; import com.android.launcher3.logging.StatsLogManager; import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.model.data.AppPairInfo; import com.android.launcher3.model.data.FolderInfo; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; Loading Loading @@ -1082,19 +1083,19 @@ public class TaskbarActivityContext extends BaseTaskbarContext { ActivityManagerWrapper.getInstance().startActivityFromRecents(task.key, ActivityOptions.makeBasic()); mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true); } else if (tag instanceof FolderInfo fi && fi.itemType == Favorites.ITEM_TYPE_FOLDER) { } else if (tag instanceof FolderInfo) { // Tapping an expandable folder icon on Taskbar shouldCloseAllOpenViews = false; expandFolder((FolderIcon) view); } else if (tag instanceof FolderInfo fi && fi.itemType == Favorites.ITEM_TYPE_APP_PAIR) { } else if (tag instanceof AppPairInfo api) { // Tapping an app pair icon on Taskbar if (recents != null && recents.isSplitSelectionActive()) { Toast.makeText(this, "Unable to split with an app pair. Select another app.", Toast.LENGTH_SHORT).show(); } else { // Else launch the selected app pair launchFromTaskbar(recents, view, fi.contents); mControllers.uiController.onTaskbarIconLaunched(fi); launchFromTaskbar(recents, view, api.getContents()); mControllers.uiController.onTaskbarIconLaunched(api); mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true); } } else if (tag instanceof WorkspaceItemInfo) { Loading quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java +2 −2 Original line number Diff line number Diff line Loading @@ -116,9 +116,9 @@ public class TaskbarPopupController implements TaskbarControllers.LoggableTaskba } } else if (info instanceof FolderInfo && v instanceof FolderIcon) { FolderInfo fi = (FolderInfo) info; if (fi.contents.stream().anyMatch(matcher)) { if (fi.anyMatch(matcher)) { FolderDotInfo folderDotInfo = new FolderDotInfo(); for (WorkspaceItemInfo si : fi.contents) { for (WorkspaceItemInfo si : fi.getContents()) { folderDotInfo.addDotInfo(mPopupDataProvider.getDotInfoForItem(si)); } ((FolderIcon) v).setDotInfo(folderDotInfo); Loading quickstep/src/com/android/launcher3/taskbar/TaskbarView.java +11 −7 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.launcher3.taskbar; import static android.content.pm.PackageManager.FEATURE_PC; import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED; import static com.android.launcher3.BubbleTextView.DISPLAY_TASKBAR; import static com.android.launcher3.Flags.enableCursorHoverStates; import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APP_PAIR; import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_FOLDER; Loading Loading @@ -52,6 +53,8 @@ import com.android.launcher3.Utilities; import com.android.launcher3.apppairs.AppPairIcon; import com.android.launcher3.folder.FolderIcon; import com.android.launcher3.folder.PreviewBackground; import com.android.launcher3.model.data.AppPairInfo; import com.android.launcher3.model.data.CollectionInfo; import com.android.launcher3.model.data.FolderInfo; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; Loading Loading @@ -282,7 +285,7 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar removeView(view); view.setOnClickListener(null); view.setOnLongClickListener(null); if (!(view.getTag() instanceof FolderInfo)) { if (!(view.getTag() instanceof CollectionInfo)) { mActivityContext.getViewCache().recycleView(view.getSourceLayoutResId(), view); } view.setTag(null); Loading Loading @@ -316,8 +319,8 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar boolean isCollection = false; if (hotseatItemInfo.isPredictedItem()) { expectedLayoutResId = R.layout.taskbar_predicted_app_icon; } else if (hotseatItemInfo instanceof FolderInfo fi) { expectedLayoutResId = fi.itemType == ITEM_TYPE_APP_PAIR } else if (hotseatItemInfo instanceof CollectionInfo ci) { expectedLayoutResId = ci.itemType == ITEM_TYPE_APP_PAIR ? R.layout.app_pair_icon : R.layout.folder_icon; isCollection = true; Loading Loading @@ -345,17 +348,18 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar if (hotseatView == null) { if (isCollection) { FolderInfo folderInfo = (FolderInfo) hotseatItemInfo; CollectionInfo collectionInfo = (CollectionInfo) hotseatItemInfo; switch (hotseatItemInfo.itemType) { case ITEM_TYPE_FOLDER: hotseatView = FolderIcon.inflateFolderAndIcon( expectedLayoutResId, mActivityContext, this, folderInfo); expectedLayoutResId, mActivityContext, this, (FolderInfo) collectionInfo); ((FolderIcon) hotseatView).setTextVisible(false); break; case ITEM_TYPE_APP_PAIR: hotseatView = AppPairIcon.inflateIcon( expectedLayoutResId, mActivityContext, this, folderInfo, BubbleTextView.DISPLAY_TASKBAR); expectedLayoutResId, mActivityContext, this, (AppPairInfo) collectionInfo, DISPLAY_TASKBAR); ((AppPairIcon) hotseatView).setTextVisible(false); break; default: Loading quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +2 −2 Original line number Diff line number Diff line Loading @@ -813,8 +813,8 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar * 3) All Apps button */ public View getFirstIconMatch(Predicate<ItemInfo> matcher) { Predicate<ItemInfo> folderMatcher = ItemInfoMatcher.forFolderMatch(matcher); return mTaskbarView.getFirstMatch(matcher, folderMatcher); Predicate<ItemInfo> collectionMatcher = ItemInfoMatcher.forFolderMatch(matcher); return mTaskbarView.getFirstMatch(matcher, collectionMatcher); } /** Loading Loading
quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java +8 −7 Original line number Diff line number Diff line Loading @@ -18,8 +18,8 @@ package com.android.launcher3.model; import static android.text.format.DateUtils.DAY_IN_MILLIS; import static android.text.format.DateUtils.formatElapsedTime; import static com.android.launcher3.LauncherPrefs.nonRestorableItem; import static com.android.launcher3.EncryptionType.ENCRYPTED; import static com.android.launcher3.LauncherPrefs.nonRestorableItem; import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT_PREDICTION; import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_PREDICTION; import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_WIDGETS_PREDICTION; Loading Loading @@ -65,7 +65,7 @@ import com.android.launcher3.logging.InstanceId; import com.android.launcher3.logging.InstanceIdSequence; import com.android.launcher3.model.BgDataModel.FixedContainerItems; import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.model.data.FolderInfo; import com.android.launcher3.model.data.CollectionInfo; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.pm.UserCache; Loading Loading @@ -233,7 +233,7 @@ public class QuickstepModelDelegate extends ModelDelegate { } InstanceId instanceId = new InstanceIdSequence().newInstanceId(); for (ItemInfo info : itemsIdMap) { FolderInfo parent = getContainer(info, itemsIdMap); CollectionInfo parent = getContainer(info, itemsIdMap); StatsLogCompatManager.writeSnapshot(info.buildProto(parent), instanceId); } additionalSnapshotEvents(instanceId); Loading Loading @@ -270,7 +270,7 @@ public class QuickstepModelDelegate extends ModelDelegate { } for (ItemInfo info : itemsIdMap) { FolderInfo parent = getContainer(info, itemsIdMap); CollectionInfo parent = getContainer(info, itemsIdMap); LauncherAtom.ItemInfo itemInfo = info.buildProto(parent); Log.d(TAG, itemInfo.toString()); StatsEvent statsEvent = StatsLogCompatManager.buildStatsEvent(itemInfo, Loading @@ -293,18 +293,19 @@ public class QuickstepModelDelegate extends ModelDelegate { } } private static FolderInfo getContainer(ItemInfo info, IntSparseArrayMap<ItemInfo> itemsIdMap) { private static CollectionInfo getContainer( ItemInfo info, IntSparseArrayMap<ItemInfo> itemsIdMap) { if (info.container > 0) { ItemInfo containerInfo = itemsIdMap.get(info.container); if (!(containerInfo instanceof FolderInfo)) { if (!(containerInfo instanceof CollectionInfo)) { Log.e(TAG, String.format( "Item info: %s found with invalid container: %s", info, containerInfo)); } // Allow crash to help debug b/173838775 return (FolderInfo) containerInfo; return (CollectionInfo) containerInfo; } return null; } Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +5 −4 Original line number Diff line number Diff line Loading @@ -89,6 +89,7 @@ import com.android.launcher3.folder.FolderIcon; import com.android.launcher3.logger.LauncherAtom; import com.android.launcher3.logging.StatsLogManager; import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.model.data.AppPairInfo; import com.android.launcher3.model.data.FolderInfo; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; Loading Loading @@ -1082,19 +1083,19 @@ public class TaskbarActivityContext extends BaseTaskbarContext { ActivityManagerWrapper.getInstance().startActivityFromRecents(task.key, ActivityOptions.makeBasic()); mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true); } else if (tag instanceof FolderInfo fi && fi.itemType == Favorites.ITEM_TYPE_FOLDER) { } else if (tag instanceof FolderInfo) { // Tapping an expandable folder icon on Taskbar shouldCloseAllOpenViews = false; expandFolder((FolderIcon) view); } else if (tag instanceof FolderInfo fi && fi.itemType == Favorites.ITEM_TYPE_APP_PAIR) { } else if (tag instanceof AppPairInfo api) { // Tapping an app pair icon on Taskbar if (recents != null && recents.isSplitSelectionActive()) { Toast.makeText(this, "Unable to split with an app pair. Select another app.", Toast.LENGTH_SHORT).show(); } else { // Else launch the selected app pair launchFromTaskbar(recents, view, fi.contents); mControllers.uiController.onTaskbarIconLaunched(fi); launchFromTaskbar(recents, view, api.getContents()); mControllers.uiController.onTaskbarIconLaunched(api); mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true); } } else if (tag instanceof WorkspaceItemInfo) { Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java +2 −2 Original line number Diff line number Diff line Loading @@ -116,9 +116,9 @@ public class TaskbarPopupController implements TaskbarControllers.LoggableTaskba } } else if (info instanceof FolderInfo && v instanceof FolderIcon) { FolderInfo fi = (FolderInfo) info; if (fi.contents.stream().anyMatch(matcher)) { if (fi.anyMatch(matcher)) { FolderDotInfo folderDotInfo = new FolderDotInfo(); for (WorkspaceItemInfo si : fi.contents) { for (WorkspaceItemInfo si : fi.getContents()) { folderDotInfo.addDotInfo(mPopupDataProvider.getDotInfoForItem(si)); } ((FolderIcon) v).setDotInfo(folderDotInfo); Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarView.java +11 −7 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.launcher3.taskbar; import static android.content.pm.PackageManager.FEATURE_PC; import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED; import static com.android.launcher3.BubbleTextView.DISPLAY_TASKBAR; import static com.android.launcher3.Flags.enableCursorHoverStates; import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APP_PAIR; import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_FOLDER; Loading Loading @@ -52,6 +53,8 @@ import com.android.launcher3.Utilities; import com.android.launcher3.apppairs.AppPairIcon; import com.android.launcher3.folder.FolderIcon; import com.android.launcher3.folder.PreviewBackground; import com.android.launcher3.model.data.AppPairInfo; import com.android.launcher3.model.data.CollectionInfo; import com.android.launcher3.model.data.FolderInfo; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; Loading Loading @@ -282,7 +285,7 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar removeView(view); view.setOnClickListener(null); view.setOnLongClickListener(null); if (!(view.getTag() instanceof FolderInfo)) { if (!(view.getTag() instanceof CollectionInfo)) { mActivityContext.getViewCache().recycleView(view.getSourceLayoutResId(), view); } view.setTag(null); Loading Loading @@ -316,8 +319,8 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar boolean isCollection = false; if (hotseatItemInfo.isPredictedItem()) { expectedLayoutResId = R.layout.taskbar_predicted_app_icon; } else if (hotseatItemInfo instanceof FolderInfo fi) { expectedLayoutResId = fi.itemType == ITEM_TYPE_APP_PAIR } else if (hotseatItemInfo instanceof CollectionInfo ci) { expectedLayoutResId = ci.itemType == ITEM_TYPE_APP_PAIR ? R.layout.app_pair_icon : R.layout.folder_icon; isCollection = true; Loading Loading @@ -345,17 +348,18 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar if (hotseatView == null) { if (isCollection) { FolderInfo folderInfo = (FolderInfo) hotseatItemInfo; CollectionInfo collectionInfo = (CollectionInfo) hotseatItemInfo; switch (hotseatItemInfo.itemType) { case ITEM_TYPE_FOLDER: hotseatView = FolderIcon.inflateFolderAndIcon( expectedLayoutResId, mActivityContext, this, folderInfo); expectedLayoutResId, mActivityContext, this, (FolderInfo) collectionInfo); ((FolderIcon) hotseatView).setTextVisible(false); break; case ITEM_TYPE_APP_PAIR: hotseatView = AppPairIcon.inflateIcon( expectedLayoutResId, mActivityContext, this, folderInfo, BubbleTextView.DISPLAY_TASKBAR); expectedLayoutResId, mActivityContext, this, (AppPairInfo) collectionInfo, DISPLAY_TASKBAR); ((AppPairIcon) hotseatView).setTextVisible(false); break; default: Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +2 −2 Original line number Diff line number Diff line Loading @@ -813,8 +813,8 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar * 3) All Apps button */ public View getFirstIconMatch(Predicate<ItemInfo> matcher) { Predicate<ItemInfo> folderMatcher = ItemInfoMatcher.forFolderMatch(matcher); return mTaskbarView.getFirstMatch(matcher, folderMatcher); Predicate<ItemInfo> collectionMatcher = ItemInfoMatcher.forFolderMatch(matcher); return mTaskbarView.getFirstMatch(matcher, collectionMatcher); } /** Loading