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

Commit 5f2dd99e authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Make Compose QS STL match the CUJ start/end signals" into main

parents 905e8eaf 8aca17bc
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -203,6 +203,8 @@ public interface QS extends FragmentBase {
     */
    void setIsNotificationPanelFullWidth(boolean isFullWidth);

    default void setQSExpandingOrCollapsing(boolean isQSExpandingOrCollapsing) {}

    /**
     * Callback for when QSPanel container is scrolled
     */
+37 −16
Original line number Diff line number Diff line
@@ -306,6 +306,7 @@ constructor(
                sceneState,
                viewModel.containerViewModel.editModeViewModel.isEditing,
                snapshotFlow { viewModel.expansionState }.map { it.progress },
                snapshotFlow { viewModel.isQSExpandingOrCollapsing },
            )
        }

@@ -537,6 +538,10 @@ constructor(
        return qqsVisible.value
    }

    override fun setQSExpandingOrCollapsing(isQSExpandingOrCollapsing: Boolean) {
        viewModel.isQSExpandingOrCollapsing = isQSExpandingOrCollapsing
    }

    private fun setListenerCollections() {
        lifecycleScope.launch {
            lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
@@ -877,6 +882,7 @@ private suspend fun synchronizeQsState(
    state: MutableSceneTransitionLayoutState,
    editMode: Flow<Boolean>,
    expansion: Flow<Float>,
    isQSExpandingOrCollapsing: Flow<Boolean>,
) {
    coroutineScope {
        val animationScope = this
@@ -888,25 +894,42 @@ private suspend fun synchronizeQsState(
            currentTransition = null
        }

        editMode.combine(expansion, ::Pair).collectLatest { (editMode, progress) ->
        var lastValidProgress = 0f
        combine(editMode, expansion, isQSExpandingOrCollapsing, ::Triple).collectLatest {
            (editMode, progress, isQSExpandingOrCollapsing) ->
            if (editMode && state.currentScene != SceneKeys.EditMode) {
                state.setTargetScene(SceneKeys.EditMode, animationScope)?.second?.join()
            } else if (!editMode && state.currentScene == SceneKeys.EditMode) {
                state.setTargetScene(SceneKeys.QuickSettings, animationScope)?.second?.join()
            }

            if (!editMode) {
                when (progress) {
                    0f -> snapTo(QuickQuickSettings)
                    1f -> snapTo(QuickSettings)
                    else -> {
                if (!isQSExpandingOrCollapsing) {
                    if (progress == 0f) {
                        snapTo(QuickQuickSettings)
                        return@collectLatest
                    }

                    if (progress == 1f) {
                        snapTo(QuickSettings)
                        return@collectLatest
                    }
                }

                var progress = progress
                if (progress >= 0f || progress <= 1f) {
                    lastValidProgress = progress
                } else {
                    progress = lastValidProgress
                }

                val transition = currentTransition
                if (transition != null) {
                    transition.progress = progress
                    return@collectLatest
                }

                        val newTransition =
                            ExpansionTransition(progress).also { currentTransition = it }
                val newTransition = ExpansionTransition(progress).also { currentTransition = it }
                state.startTransitionImmediately(
                    animationScope = animationScope,
                    transition = newTransition,
@@ -915,8 +938,6 @@ private suspend fun synchronizeQsState(
        }
    }
}
    }
}

private class ExpansionTransition(currentProgress: Float) :
    TransitionState.Transition.ChangeScene(
+3 −0
Original line number Diff line number Diff line
@@ -306,6 +306,8 @@ constructor(
    val animateTilesExpansion: Boolean
        get() = inFirstPage && !mediaSuddenlyAppearingInLandscape

    var isQSExpandingOrCollapsing by mutableStateOf(false)

    private val inFirstPage: Boolean
        get() = inFirstPageViewModel.inFirstPage

@@ -539,6 +541,7 @@ constructor(
                println("proposedTranslation", proposedTranslation)
                println("expansionState", expansionState)
                println("forceQS", forceQs)
                println("isShadeExpandingOrCollapsing", isQSExpandingOrCollapsing)
                printSection("Derived values") {
                    println("headerTranslation", headerTranslation)
                    println("translationScaleY", translationScaleY)
+11 −4
Original line number Diff line number Diff line
@@ -105,15 +105,14 @@ import com.android.systemui.util.kotlin.JavaAdapter;

import dalvik.annotation.optimization.NeverCompile;

import dagger.Lazy;

import kotlin.Unit;

import java.io.PrintWriter;

import javax.inject.Inject;
import javax.inject.Provider;

import dagger.Lazy;
import kotlin.Unit;

/** Handles QuickSettings touch handling, expansion and animation state. */
@SysUISingleton
public class QuickSettingsControllerImpl implements QuickSettingsController, Dumpable {
@@ -2366,8 +2365,16 @@ public class QuickSettingsControllerImpl implements QuickSettingsController, Dum
            return;
        }
        if (startTracing) {
            if (mQs != null) {
                mQs.setQSExpandingOrCollapsing(true);
            }

            monitor.begin(mPanelView, Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE);
        } else {
            if (mQs != null) {
                mQs.setQSExpandingOrCollapsing(false);
            }

            if (wasCancelled) {
                monitor.cancel(Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE);
            } else {