Files
Lawnchair/quickstep/src/com/android/quickstep/recents/viewmodel/RecentsViewModel.kt
T
Uwais Ashraf 7fd33ebde5 Change actions view disabling logic
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
2025-03-19 18:03:52 +00:00

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
}
}