blob: cfebb813ffc93a159fae0893de6e566c5820b8e2 [file] [edit]
/*
* 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 updateFullscreenProgress(fullscreenProgress: Float) {
recentsViewData.fullscreenProgress.value = fullscreenProgress
}
fun updateTasksFullyVisible(taskIds: Set<Int>) {
recentsViewData.settledFullyVisibleTaskIds.value = taskIds
}
fun setOverlayEnabled(isOverlayEnabled: Boolean) {
recentsViewData.overlayEnabled.value = isOverlayEnabled
}
fun setTintAmount(tintAmount: Float) {
recentsViewData.tintAmount.value = tintAmount
}
fun updateThumbnailSplashProgress(taskThumbnailSplashAlpha: Float) {
recentsViewData.thumbnailSplashProgress.value = taskThumbnailSplashAlpha
}
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
}
}