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

Commit fe7878c1 authored by Vinay Joglekar's avatar Vinay Joglekar Committed by Android (Google) Code Review
Browse files

Merge "Dim TaskThumbnailView on Foreground scrim" into main

parents 0ffb2d55 36ef7bf6
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