7fd33ebde5
1. Introduces "central task" - the task relating to the actions view 2. Decouple the overlay and actions view 3. Undo filter of taskViewType == SINGLE for overlay as it can be enabled for split tasks as well Bug: 402351284 Flag: com.android.launcher3.enable_refactor_task_thumbnail Test: OverviewImageTest (attached abtd run) Test: OverviewMenuImageTest (attached abtd run) Change-Id: Id7bc5c9c6620183d91e99d9dc5d2980eb8e3ec36
77 lines
2.5 KiB
Kotlin
77 lines
2.5 KiB
Kotlin
/*
|
|
* Copyright (C) 2024 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.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,
|
|
private val recentsViewData: RecentsViewData,
|
|
) {
|
|
fun refreshAllTaskData() {
|
|
recentsTasksRepository.getAllTaskData(true)
|
|
}
|
|
|
|
fun updateVisibleTasks(visibleTaskIdList: List<Int>) {
|
|
recentsTasksRepository.setVisibleTasks(visibleTaskIdList.toSet())
|
|
}
|
|
|
|
fun updateTasksFullyVisible(taskIds: Set<Int>) {
|
|
recentsViewData.settledFullyVisibleTaskIds.value = taskIds
|
|
}
|
|
|
|
fun updateCentralTaskIds(taskIds: Set<Int>) {
|
|
recentsViewData.centralTaskIds.value = taskIds
|
|
}
|
|
|
|
fun setOverlayEnabled(isOverlayEnabled: Boolean) {
|
|
recentsViewData.overlayEnabled.value = isOverlayEnabled
|
|
}
|
|
|
|
suspend fun waitForThumbnailsToUpdate(updatedThumbnails: Map<Int, ThumbnailData>?) {
|
|
if (updatedThumbnails.isNullOrEmpty()) return
|
|
combine(
|
|
updatedThumbnails.map {
|
|
recentsTasksRepository.getThumbnailById(it.key).filter { thumbnailData ->
|
|
thumbnailData?.snapshotId == it.value.snapshotId
|
|
}
|
|
}
|
|
) {}
|
|
.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
|
|
}
|
|
}
|