Updates the app icon based on the TaskData
- Introduces `setIconState` to manage icon and text updates based on `TaskData`.
- Refactors IconAppChip to use the icon and title provided by TaskViewModel.
Fix: 388486032
Fix: 388490814
Flag: com.android.launcher3.enable_overview_icon_menu
Test: OverviewImageTest
Change-Id: Ibf469743ebc767054eaaabe1891750b7f9de827a
diff --git a/quickstep/src/com/android/quickstep/recents/ui/viewmodel/TaskViewModel.kt b/quickstep/src/com/android/quickstep/recents/ui/viewmodel/TaskViewModel.kt
index 162d14d..0b299ee 100644
--- a/quickstep/src/com/android/quickstep/recents/ui/viewmodel/TaskViewModel.kt
+++ b/quickstep/src/com/android/quickstep/recents/ui/viewmodel/TaskViewModel.kt
@@ -77,8 +77,7 @@
.flowOn(dispatcherProvider.background)
fun bind(vararg taskId: TaskId) {
- Log.d(TAG, "bind: $taskId")
- taskIds.value = taskId.toSet()
+ taskIds.value = taskId.toSet().also { Log.d(TAG, "bind: $it") }
}
fun isThumbnailValid(thumbnail: ThumbnailData?, width: Int, height: Int): Boolean =
diff --git a/quickstep/src/com/android/quickstep/views/DesktopTaskView.kt b/quickstep/src/com/android/quickstep/views/DesktopTaskView.kt
index bb6829a..02be373 100644
--- a/quickstep/src/com/android/quickstep/views/DesktopTaskView.kt
+++ b/quickstep/src/com/android/quickstep/views/DesktopTaskView.kt
@@ -53,6 +53,7 @@
import com.android.quickstep.recents.di.get
import com.android.quickstep.recents.domain.model.DesktopTaskBoundsData
import com.android.quickstep.recents.ui.viewmodel.DesktopTaskViewModel
+import com.android.quickstep.recents.ui.viewmodel.TaskData
import com.android.quickstep.task.thumbnail.TaskThumbnailView
import com.android.quickstep.util.RecentsOrientedState
import com.android.systemui.shared.recents.model.Task
@@ -364,6 +365,10 @@
taskContainer.snapshotView.contentDescription = taskContainer.task.titleDescription
}
+ override fun setIconState(container: TaskContainer, state: TaskData?) {
+ container.snapshotView.contentDescription = (state as? TaskData.Data)?.titleDescription
+ }
+
// Ignoring [onIconUnloaded] as all tasks shares the same Desktop icon
override fun onIconUnloaded(taskContainer: TaskContainer) {}
diff --git a/quickstep/src/com/android/quickstep/views/TaskView.kt b/quickstep/src/com/android/quickstep/views/TaskView.kt
index 5093259..609262f 100644
--- a/quickstep/src/com/android/quickstep/views/TaskView.kt
+++ b/quickstep/src/com/android/quickstep/views/TaskView.kt
@@ -81,6 +81,7 @@
import com.android.quickstep.recents.di.RecentsDependencies
import com.android.quickstep.recents.di.get
import com.android.quickstep.recents.di.inject
+import com.android.quickstep.recents.ui.viewmodel.TaskData
import com.android.quickstep.recents.ui.viewmodel.TaskTileUiState
import com.android.quickstep.recents.ui.viewmodel.TaskViewModel
import com.android.quickstep.util.ActiveGestureErrorDetector
@@ -773,12 +774,17 @@
// Updating containers
val mapOfTasks = state.tasks.associateBy { it.taskId }
taskContainers.forEach { container ->
+ val containerState = mapOfTasks[container.task.key.id]
container.setState(
- state = mapOfTasks[container.task.key.id],
+ state = containerState,
liveTile = state.isLiveTile,
hasHeader = type == TaskViewType.DESKTOP,
)
updateThumbnailValidity(container)
+
+ if (enableOverviewIconMenu()) {
+ setIconState(container, containerState)
+ }
}
}
@@ -1028,7 +1034,7 @@
}
}
}
- if (needsUpdate(changes, FLAG_UPDATE_ICON)) {
+ if (needsUpdate(changes, FLAG_UPDATE_ICON) && !enableOverviewIconMenu()) {
taskContainers.forEach {
if (visible) {
recentsModel.iconCache
@@ -1059,10 +1065,23 @@
pendingIconLoadRequests.clear()
}
+ protected open fun setIconState(container: TaskContainer, state: TaskData?) {
+ if (enableOverviewIconMenu()) {
+ if (state is TaskData.Data) {
+ setIcon(container.iconView, state.icon)
+ container.iconView.setText(state.title)
+ container.digitalWellBeingToast?.initialize()
+ } else {
+ setIcon(container.iconView, null)
+ container.iconView.setText(null)
+ }
+ }
+ }
+
protected open fun onIconLoaded(taskContainer: TaskContainer) {
setIcon(taskContainer.iconView, taskContainer.task.icon)
if (enableOverviewIconMenu()) {
- setText(taskContainer.iconView, taskContainer.task.title)
+ taskContainer.iconView.setText(taskContainer.task.title)
}
taskContainer.digitalWellBeingToast?.initialize()
}
@@ -1070,7 +1089,7 @@
protected open fun onIconUnloaded(taskContainer: TaskContainer) {
setIcon(taskContainer.iconView, null)
if (enableOverviewIconMenu()) {
- setText(taskContainer.iconView, null)
+ taskContainer.iconView.setText(null)
}
}
@@ -1095,10 +1114,6 @@
}
}
- protected fun setText(iconView: TaskViewIcon, text: CharSequence?) {
- iconView.setText(text)
- }
-
@JvmOverloads
open fun setShouldShowScreenshot(
shouldShowScreenshot: Boolean,