From 26eec78179deaa056ddf707369afe0d5ac5ddb18 Mon Sep 17 00:00:00 2001 From: Manu Cornet Date: Fri, 11 Nov 2016 09:52:45 -0800 Subject: [PATCH] Move the 'next launch target' logic into the task stack For better reusability in other flavors of Recents. Bug: 32101881 Test: Behavior is covered by existing automated tests. Change-Id: Ibe39cbae0b5973210cad478a9c5ab75280ee0ac2 --- .../com/android/systemui/recents/model/TaskStack.java | 18 ++++++++++++++++++ .../android/systemui/recents/views/TaskStackView.java | 10 ++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java b/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java index 745f5a5a773e..178cb9f890c2 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java +++ b/packages/SystemUI/src/com/android/systemui/recents/model/TaskStack.java @@ -849,6 +849,24 @@ public class TaskStack { return null; } + /** + * Returns the task in stack tasks which should be launched next if Recents are toggled + * again, or null if there is no task to be launched. + */ + public Task getNextLaunchTarget() { + int taskCount = getTaskCount(); + if (taskCount == 0) { + return null; + } + int launchTaskIndex = indexOfStackTask(getLaunchTarget()); + if (launchTaskIndex != -1) { + launchTaskIndex = Math.max(0, launchTaskIndex - 1); + } else { + launchTaskIndex = getTaskCount() - 1; + } + return getStackTasks().get(launchTaskIndex); + } + /** Returns the index of this task in this current task stack */ public int indexOfStackTask(Task t) { return mStackTaskList.indexOf(t); diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java index 77c61f8bc526..8c94c3578e96 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java @@ -1683,17 +1683,11 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal return; } - int launchTaskIndex = mStack.indexOfStackTask(mStack.getLaunchTarget()); - if (launchTaskIndex != -1) { - launchTaskIndex = Math.max(0, launchTaskIndex - 1); - } else { - launchTaskIndex = mStack.getTaskCount() - 1; - } - if (launchTaskIndex != -1) { + final Task launchTask = mStack.getNextLaunchTarget(); + if (launchTask != null) { // Stop all animations cancelAllTaskViewAnimations(); - final Task launchTask = mStack.getStackTasks().get(launchTaskIndex); float curScroll = mStackScroller.getStackScroll(); float targetScroll = mLayoutAlgorithm.getStackScrollForTaskAtInitialOffset(launchTask); float absScrollDiff = Math.abs(targetScroll - curScroll); -- 2.11.0