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

Commit 36ef7bf6 authored by vinayjoglekar's avatar vinayjoglekar
Browse files

Dim TaskThumbnailView on Foreground scrim

Bug: 349601769
Test: TaskThumbnailViewModelTest
Flag: com.android.launcher3.enable_refactor_task_thumbnail
Change-Id: I3a9fa21d8a4c28ffe40279243030f0e47c957513
parent b4070149
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -31,4 +31,7 @@ class RecentsViewData {

    // The settled set of visible taskIds that is updated after RecentsView scroll settles.
    val settledFullyVisibleTaskIds = MutableStateFlow(emptySet<Int>())

    // Color tint on foreground scrim
    val tintAmount = MutableStateFlow(0f)
}
+4 −0
Original line number Diff line number Diff line
@@ -45,4 +45,8 @@ class RecentsViewModel(
    fun setOverlayEnabled(isOverlayEnabled: Boolean) {
        recentsViewData.overlayEnabled.value = isOverlayEnabled
    }

    fun setTintAmount(tintAmount: Float) {
        recentsViewData.tintAmount.value = tintAmount
    }
}
+1 −8
Original line number Diff line number Diff line
@@ -98,10 +98,7 @@ class TaskThumbnailView : FrameLayout, ViewPool.Reusable {
            }
            .launchIn(viewAttachedScope)
        viewModel.dimProgress
            .onEach { dimProgress ->
                // TODO(b/348195366) Add fade in/out for scrim
                scrimView.alpha = dimProgress * MAX_SCRIM_ALPHA
            }
            .onEach { dimProgress -> scrimView.alpha = dimProgress }
            .launchIn(viewAttachedScope)
        viewModel.cornerRadiusProgress.onEach { invalidateOutline() }.launchIn(viewAttachedScope)
        viewModel.inheritedScale
@@ -176,8 +173,4 @@ class TaskThumbnailView : FrameLayout, ViewPool.Reusable {
            overviewCornerRadius,
            fullscreenCornerRadius
        ) / inheritedScale

    private companion object {
        const val MAX_SCRIM_ALPHA = 0.4f
    }
}
+11 −1
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.quickstep.task.thumbnail.TaskThumbnailUiState.LiveTile
import com.android.quickstep.task.thumbnail.TaskThumbnailUiState.Snapshot
import com.android.quickstep.task.thumbnail.TaskThumbnailUiState.Uninitialized
import com.android.systemui.shared.recents.model.Task
import kotlin.math.max
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
@@ -63,7 +64,12 @@ class TaskThumbnailViewModel(
        combine(recentsViewData.scale, taskViewData.scale) { recentsScale, taskScale ->
            recentsScale * taskScale
        }
    val dimProgress: Flow<Float> = taskContainerData.taskMenuOpenProgress
    val dimProgress: Flow<Float> =
        combine(taskContainerData.taskMenuOpenProgress, recentsViewData.tintAmount) {
            taskMenuOpenProgress,
            tintAmount ->
            max(taskMenuOpenProgress * MAX_SCRIM_ALPHA, tintAmount)
        }
    val uiState: Flow<TaskThumbnailUiState> =
        task
            .flatMapLatest { taskFlow ->
@@ -110,4 +116,8 @@ class TaskThumbnailViewModel(
    }

    @ColorInt private fun Int.removeAlpha(): Int = ColorUtils.setAlphaComponent(this, 0xff)

    private companion object {
        const val MAX_SCRIM_ALPHA = 0.4f
    }
}
+4 −1
Original line number Diff line number Diff line
@@ -6116,7 +6116,6 @@ public abstract class RecentsView<CONTAINER_TYPE extends Context & RecentsViewCo
     * tasks to be dimmed while other elements in the recents view are left alone.
     */
    public void showForegroundScrim(boolean show) {
        // TODO(b/349601769) Add scrim response into new TTV - this is called from overlay
        if (!show && mColorTint == 0) {
            if (mTintingAnimator != null) {
                mTintingAnimator.cancel();
@@ -6135,6 +6134,10 @@ public abstract class RecentsView<CONTAINER_TYPE extends Context & RecentsViewCo
    private void setColorTint(float tintAmount) {
        mColorTint = tintAmount;

        if (enableRefactorTaskThumbnail()) {
            mRecentsViewModel.setTintAmount(tintAmount);
        }

        for (int i = 0; i < getTaskViewCount(); i++) {
            requireTaskViewAt(i).setColorTint(mColorTint, mTintingColor);
        }
Loading