Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 453734f0 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Support switch to screenshot for TTV" into main

parents 65b5eb47 378622c9
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -41,4 +41,10 @@ interface RecentTasksRepository {
     * populated e.g. icons/thumbnails etc.
     */
    fun setVisibleTasks(visibleTaskIdList: List<Int>)

    /**
     * Override [ThumbnailData] with a map of taskId to [ThumbnailData]. The override only applies
     * if the tasks are already visible, and will be invalidated when tasks become invisible.
     */
    fun setThumbnailOverride(thumbnailOverride: Map<Int, ThumbnailData>)
}
+13 −4
Original line number Diff line number Diff line
@@ -45,15 +45,18 @@ class TasksRepository(
    private val _taskData =
        groupedTaskData.map { groupTaskList -> groupTaskList.flatMap { it.tasks } }
    private val visibleTaskIds = MutableStateFlow(emptySet<Int>())
    private val thumbnailOverride = MutableStateFlow(mapOf<Int, ThumbnailData>())

    private val taskData: Flow<List<Task>> =
        combine(_taskData, getThumbnailQueryResults(), getIconQueryResults()) {
        combine(_taskData, getThumbnailQueryResults(), getIconQueryResults(), thumbnailOverride) {
            tasks,
            thumbnailQueryResults,
            iconQueryResults ->
            iconQueryResults,
            thumbnailOverride ->
            tasks.forEach { task ->
                // Add retrieved thumbnails + remove unnecessary thumbnails
                task.thumbnail = thumbnailQueryResults[task.key.id]
                // Add retrieved thumbnails + remove unnecessary thumbnails (e.g. invisible)
                task.thumbnail =
                    thumbnailOverride[task.key.id] ?: thumbnailQueryResults[task.key.id]

                // TODO(b/352331675) don't load icons for DesktopTaskView
                // Add retrieved icons + remove unnecessary icons
@@ -79,6 +82,12 @@ class TasksRepository(

    override fun setVisibleTasks(visibleTaskIdList: List<Int>) {
        this.visibleTaskIds.value = visibleTaskIdList.toSet()
        setThumbnailOverride(thumbnailOverride.value)
    }

    override fun setThumbnailOverride(thumbnailOverride: Map<Int, ThumbnailData>) {
        this.thumbnailOverride.value =
            thumbnailOverride.filterKeys(this.visibleTaskIds.value::contains).toMap()
    }

    /** Flow wrapper for [TaskThumbnailDataSource.getThumbnailInBackground] api */
+6 −0
Original line number Diff line number Diff line
@@ -36,4 +36,10 @@ class RecentsViewData {
    val tintAmount = MutableStateFlow(0f)

    val thumbnailSplashProgress = MutableStateFlow(0f)

    // A list of taskIds that are associated with a RecentsAnimationController. */
    val runningTaskIds = MutableStateFlow(emptySet<Int>())

    // Whether we should use static screenshot instead of live tile for taskIds in [runningTaskIds]
    val runningTaskShowScreenshot = MutableStateFlow(false)
}
+35 −0
Original line number Diff line number Diff line
@@ -17,6 +17,10 @@
package com.android.quickstep.recents.viewmodel

import com.android.quickstep.recents.data.RecentTasksRepository
import com.android.systemui.shared.recents.model.ThumbnailData
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.first

class RecentsViewModel(
    private val recentsTasksRepository: RecentTasksRepository,
@@ -53,4 +57,35 @@ class RecentsViewModel(
    fun updateThumbnailSplashProgress(taskThumbnailSplashAlpha: Float) {
        recentsViewData.thumbnailSplashProgress.value = taskThumbnailSplashAlpha
    }

    fun setThumbnailOverride(thumbnailOverride: Map<Int, ThumbnailData>) {
        recentsTasksRepository.setThumbnailOverride(thumbnailOverride)
    }

    suspend fun waitForThumbnailsToUpdate(updatedThumbnails: Map<Int, ThumbnailData>) {
        combine(
                updatedThumbnails.map {
                    recentsTasksRepository.getThumbnailById(it.key).filter { thumbnailData ->
                        thumbnailData == it.value
                    }
                }
            ) {}
            .first()
    }

    suspend fun waitForRunningTaskShowScreenshotToUpdate() {
        recentsViewData.runningTaskShowScreenshot.filter { it }.first()
    }

    fun onReset() {
        updateVisibleTasks(emptyList())
    }

    fun updateRunningTask(taskIds: Set<Int>) {
        recentsViewData.runningTaskIds.value = taskIds
    }

    fun setRunningTaskShowScreenshot(showScreenshot: Boolean) {
        recentsViewData.runningTaskShowScreenshot.value = showScreenshot
    }
}
+0 −2
Original line number Diff line number Diff line
@@ -45,5 +45,3 @@ sealed class TaskThumbnailUiState {
        val size: Point,
    )
}

data class TaskThumbnail(val taskId: Int, val isRunning: Boolean)
Loading