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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user