Loading go/quickstep/src/com/android/quickstep/TaskAdapter.java +8 −2 Original line number Diff line number Diff line Loading @@ -35,17 +35,23 @@ public final class TaskAdapter extends Adapter<TaskHolder> { private static final int MAX_TASKS_TO_DISPLAY = 6; private static final String TAG = "TaskAdapter"; private final TaskListLoader mLoader; private TaskInputController mInputController; public TaskAdapter(@NonNull TaskListLoader loader) { mLoader = loader; } public void setInputController(TaskInputController inputController) { mInputController = inputController; } @Override public TaskHolder onCreateViewHolder(ViewGroup parent, int viewType) { // TODO: Swap in an actual task view here (view w/ icon, label, etc.) TaskItemView itemView = (TaskItemView) LayoutInflater.from(parent.getContext()) .inflate(R.layout.task_item_view, parent, false); return new TaskHolder(itemView); TaskHolder holder = new TaskHolder(itemView); itemView.setOnClickListener(view -> mInputController.onTaskClicked(holder)); return holder; } @Override Loading go/quickstep/src/com/android/quickstep/TaskHolder.java +12 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package com.android.quickstep; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView.ViewHolder; import com.android.quickstep.views.TaskItemView; Loading @@ -27,6 +28,7 @@ import com.android.systemui.shared.recents.model.Task; final class TaskHolder extends ViewHolder { private final TaskItemView mTaskItemView; private Task mTask; public TaskHolder(TaskItemView itemView) { super(itemView); Loading @@ -40,7 +42,17 @@ final class TaskHolder extends ViewHolder { * @param task the task to bind to the view */ public void bindTask(Task task) { mTask = task; mTaskItemView.setLabel(task.titleDescription); mTaskItemView.setIcon(task.icon); } /** * Gets the task currently bound to this view * * @return the current task */ public @NonNull Task getTask() { return mTask; } } go/quickstep/src/com/android/quickstep/TaskInputController.java 0 → 100644 +45 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.quickstep; import com.android.systemui.shared.system.ActivityManagerWrapper; /** * Controller responsible for task logic that occurs on various input to the recents view. */ public final class TaskInputController { TaskAdapter mAdapter; public TaskInputController(TaskAdapter adapter) { mAdapter = adapter; } /** * Logic that occurs when a task view is tapped. Launches the respective task. * * @param viewHolder the task view holder that has been tapped */ public void onTaskClicked(TaskHolder viewHolder) { // TODO: Add app launch animation as part of the launch options here. ActivityManagerWrapper.getInstance().startActivityFromRecentsAsync(viewHolder.getTask().key, null /* options */, null /* resultCallback */, null /* resultCallbackHandler */); } // TODO: Implement swipe to delete and notify adapter that data has updated // TODO: Implement "Clear all" and notify adapter that data has updated } go/quickstep/src/com/android/quickstep/views/IconRecentsView.java +4 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.android.launcher3.R; import com.android.quickstep.TaskAdapter; import com.android.quickstep.TaskInputController; import com.android.quickstep.TaskListLoader; /** Loading Loading @@ -79,6 +80,7 @@ public final class IconRecentsView extends FrameLayout { private float mTranslationYFactor; private TaskAdapter mTaskAdapter; private RecyclerView mTaskRecyclerView; private TaskInputController mTaskInputController; private TaskListLoader mTaskLoader; public IconRecentsView(Context context, AttributeSet attrs) { Loading @@ -91,6 +93,8 @@ public final class IconRecentsView extends FrameLayout { super.onFinishInflate(); mTaskLoader = new TaskListLoader(mContext); mTaskAdapter = new TaskAdapter(mTaskLoader); mTaskInputController = new TaskInputController(mTaskAdapter); mTaskAdapter.setInputController(mTaskInputController); mTaskRecyclerView = findViewById(R.id.recent_task_recycler_view); mTaskRecyclerView.setAdapter(mTaskAdapter); mTaskRecyclerView.setLayoutManager( Loading Loading
go/quickstep/src/com/android/quickstep/TaskAdapter.java +8 −2 Original line number Diff line number Diff line Loading @@ -35,17 +35,23 @@ public final class TaskAdapter extends Adapter<TaskHolder> { private static final int MAX_TASKS_TO_DISPLAY = 6; private static final String TAG = "TaskAdapter"; private final TaskListLoader mLoader; private TaskInputController mInputController; public TaskAdapter(@NonNull TaskListLoader loader) { mLoader = loader; } public void setInputController(TaskInputController inputController) { mInputController = inputController; } @Override public TaskHolder onCreateViewHolder(ViewGroup parent, int viewType) { // TODO: Swap in an actual task view here (view w/ icon, label, etc.) TaskItemView itemView = (TaskItemView) LayoutInflater.from(parent.getContext()) .inflate(R.layout.task_item_view, parent, false); return new TaskHolder(itemView); TaskHolder holder = new TaskHolder(itemView); itemView.setOnClickListener(view -> mInputController.onTaskClicked(holder)); return holder; } @Override Loading
go/quickstep/src/com/android/quickstep/TaskHolder.java +12 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package com.android.quickstep; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView.ViewHolder; import com.android.quickstep.views.TaskItemView; Loading @@ -27,6 +28,7 @@ import com.android.systemui.shared.recents.model.Task; final class TaskHolder extends ViewHolder { private final TaskItemView mTaskItemView; private Task mTask; public TaskHolder(TaskItemView itemView) { super(itemView); Loading @@ -40,7 +42,17 @@ final class TaskHolder extends ViewHolder { * @param task the task to bind to the view */ public void bindTask(Task task) { mTask = task; mTaskItemView.setLabel(task.titleDescription); mTaskItemView.setIcon(task.icon); } /** * Gets the task currently bound to this view * * @return the current task */ public @NonNull Task getTask() { return mTask; } }
go/quickstep/src/com/android/quickstep/TaskInputController.java 0 → 100644 +45 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.quickstep; import com.android.systemui.shared.system.ActivityManagerWrapper; /** * Controller responsible for task logic that occurs on various input to the recents view. */ public final class TaskInputController { TaskAdapter mAdapter; public TaskInputController(TaskAdapter adapter) { mAdapter = adapter; } /** * Logic that occurs when a task view is tapped. Launches the respective task. * * @param viewHolder the task view holder that has been tapped */ public void onTaskClicked(TaskHolder viewHolder) { // TODO: Add app launch animation as part of the launch options here. ActivityManagerWrapper.getInstance().startActivityFromRecentsAsync(viewHolder.getTask().key, null /* options */, null /* resultCallback */, null /* resultCallbackHandler */); } // TODO: Implement swipe to delete and notify adapter that data has updated // TODO: Implement "Clear all" and notify adapter that data has updated }
go/quickstep/src/com/android/quickstep/views/IconRecentsView.java +4 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.android.launcher3.R; import com.android.quickstep.TaskAdapter; import com.android.quickstep.TaskInputController; import com.android.quickstep.TaskListLoader; /** Loading Loading @@ -79,6 +80,7 @@ public final class IconRecentsView extends FrameLayout { private float mTranslationYFactor; private TaskAdapter mTaskAdapter; private RecyclerView mTaskRecyclerView; private TaskInputController mTaskInputController; private TaskListLoader mTaskLoader; public IconRecentsView(Context context, AttributeSet attrs) { Loading @@ -91,6 +93,8 @@ public final class IconRecentsView extends FrameLayout { super.onFinishInflate(); mTaskLoader = new TaskListLoader(mContext); mTaskAdapter = new TaskAdapter(mTaskLoader); mTaskInputController = new TaskInputController(mTaskAdapter); mTaskAdapter.setInputController(mTaskInputController); mTaskRecyclerView = findViewById(R.id.recent_task_recycler_view); mTaskRecyclerView.setAdapter(mTaskAdapter); mTaskRecyclerView.setLayoutManager( Loading