Update KQS recents apps and desktop mode launching UX

- Updated recent apps KQS task view
- Added a desktop mode KQS task view
- Did some code cleanup to support this more cleanly

Flag: EXEMPT ENABLE_KEYBOARD_QUICK_SWITCH
Fixes: 357512178
Test: Used KQS with and without desktop mode; opened recent apps and desktop mode
Change-Id: Ib47a8a7f41b56af1ba9d0cbec65ababf8aad7881
This commit is contained in:
Schneider Victor-tulias
2024-07-11 11:38:51 -04:00
parent 4609d53ecf
commit 55c0c5e75d
14 changed files with 256 additions and 103 deletions
@@ -66,6 +66,9 @@ public final class KeyboardQuickSwitchController implements
@Nullable private KeyboardQuickSwitchViewController mQuickSwitchViewController;
private boolean mHasDesktopTask = false;
private boolean mWasDesktopTaskFilteredOut = false;
/** Initialize the controller. */
public void init(@NonNull TaskbarControllers controllers) {
mControllers = controllers;
@@ -126,11 +129,15 @@ public final class KeyboardQuickSwitchController implements
/* updateTasks= */ false,
currentFocusedIndex == -1 && !mControllerCallbacks.isFirstTaskRunning()
? 0 : currentFocusedIndex,
onDesktop);
onDesktop,
mHasDesktopTask,
mWasDesktopTaskFilteredOut);
return;
}
mTaskListChangeId = mModel.getTasks((tasks) -> {
mHasDesktopTask = false;
mWasDesktopTaskFilteredOut = false;
if (onDesktop) {
processLoadedTasksOnDesktop(tasks);
} else {
@@ -144,7 +151,9 @@ public final class KeyboardQuickSwitchController implements
/* updateTasks= */ true,
currentFocusedIndex == -1 && !mControllerCallbacks.isFirstTaskRunning()
? 0 : currentFocusedIndex,
onDesktop);
onDesktop,
mHasDesktopTask,
mWasDesktopTaskFilteredOut);
});
}
@@ -152,9 +161,22 @@ public final class KeyboardQuickSwitchController implements
// Only store MAX_TASK tasks, from most to least recent
Collections.reverse(tasks);
mTasks = tasks.stream()
.filter(task -> !(task instanceof DesktopTask))
.limit(MAX_TASKS)
.collect(Collectors.toList());
mNumHiddenTasks = Math.max(0, tasks.size() - MAX_TASKS);
for (int i = 0; i < tasks.size(); i++) {
if (tasks.get(i) instanceof DesktopTask) {
mHasDesktopTask = true;
if (i < mTasks.size()) {
mWasDesktopTaskFilteredOut = true;
}
break;
}
}
mNumHiddenTasks = Math.max(0,
tasks.size() - (mWasDesktopTaskFilteredOut ? 1 : 0) - MAX_TASKS);
}
private void processLoadedTasksOnDesktop(List<GroupTask> tasks) {
@@ -214,6 +236,8 @@ public final class KeyboardQuickSwitchController implements
pw.println(prefix + "\tisOpen=" + (mQuickSwitchViewController != null));
pw.println(prefix + "\tmNumHiddenTasks=" + mNumHiddenTasks);
pw.println(prefix + "\tmTaskListChangeId=" + mTaskListChangeId);
pw.println(prefix + "\tmHasDesktopTask=" + mHasDesktopTask);
pw.println(prefix + "\tmWasDesktopTaskFilteredOut=" + mWasDesktopTaskFilteredOut);
pw.println(prefix + "\tmTasks=[");
for (GroupTask task : mTasks) {
Task task1 = task.task1;
@@ -235,10 +259,6 @@ public final class KeyboardQuickSwitchController implements
class ControllerCallbacks {
int getTaskCount() {
return mTasks.size() + (mNumHiddenTasks == 0 ? 0 : 1);
}
@Nullable
GroupTask getTaskAt(int index) {
return index < 0 || index >= mTasks.size() ? null : mTasks.get(index);