Load and draw Recent/Running tasks that aren't in Hotseat

- Re-support GroupTask as a tag on TaskbarView BubbleTextViews
- Can tap to launch (startActivityFromRecents) or drag and drop
- Move divider when enable_recents_in_taskbar is true

Behavior:
- While in Desktop mode, all open tasks show up in TaskbarView,
  either in the Hotseat section or the Running apps section
  past the divider. Each one also has a running line indicator.
- While in Fullscreen mode, up to 2 Recent apps that are not
  part of Hotseat will be added to the right of the divider.

Flag: com.android.launcher3.enable_recents_in_taskbar
Test: TaskbarRecentAppsControllerTest
Bug: 315354060
Change-Id: I2e2870cca434b51f276a701860edb32069109159
This commit is contained in:
Tony Wickham committed 2024-06-19 00:27:30 +00:00
1 parent 7c7c90528d
commit c5995c8f6d
8 files changed
+399 -50

No files matched your search

@@ -33,6 +33,7 @@ import com.android.launcher3.util.ItemInfoMatcher;
import com.android.launcher3.util.LauncherBindableItemsContainer;
import com.android.launcher3.util.PackageUserKey;
import com.android.launcher3.util.Preconditions;
import com.android.quickstep.util.GroupTask;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -130,7 +131,7 @@ public class TaskbarModelCallbacks implements
final int itemCount = mContainer.getChildCount();
for (int itemIdx = 0; itemIdx < itemCount; itemIdx++) {
View item = mContainer.getChildAt(itemIdx);
if (op.evaluate((ItemInfo) item.getTag(), item)) {
if (item.getTag() instanceof ItemInfo itemInfo && op.evaluate(itemInfo, item)) {
return;
}
}
@@ -201,18 +202,20 @@ public class TaskbarModelCallbacks implements
if (mDeferUpdatesForSUW) {
ItemInfo[] finalHotseatItemInfos = hotseatItemInfos;
mDeferredUpdates = () ->
commitHotseatItemUpdates(finalHotseatItemInfos, runningPackages,
commitHotseatItemUpdates(finalHotseatItemInfos,
recentAppsController.getShownTasks(), runningPackages,
minimizedPackages);
} else {
commitHotseatItemUpdates(hotseatItemInfos, runningPackages, minimizedPackages);
commitHotseatItemUpdates(hotseatItemInfos,
recentAppsController.getShownTasks(), runningPackages, minimizedPackages);
}
}
private void commitHotseatItemUpdates(ItemInfo[] hotseatItemInfos, Set<String> runningPackages,
Set<String> minimizedPackages) {
mContainer.updateHotseatItems(hotseatItemInfos);
mControllers.taskbarViewController.updateIconViewsRunningStates(runningPackages,
minimizedPackages);
private void commitHotseatItemUpdates(ItemInfo[] hotseatItemInfos, List<GroupTask> recentTasks,
Set<String> runningPackages, Set<String> minimizedPackages) {
mContainer.updateHotseatItems(hotseatItemInfos, recentTasks);
mControllers.taskbarViewController.updateIconViewsRunningStates(
runningPackages, minimizedPackages);
}
/**