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

Commit ca69fe5b authored by Fabian Kozynski's avatar Fabian Kozynski Committed by Android (Google) Code Review
Browse files

Merge changes Id141ca46,I36964dc2 into main

* changes:
  [Flexiglass] Add squishiness to SingleShade.
  [Flexiglass] Fix padding in edit mode scene
parents de271b5d f9f87df1
Loading
Loading
Loading
Loading
+17 −7
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.qs.ui.composable
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
@@ -36,6 +37,7 @@ import com.android.systemui.res.R
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.composable.Scene
import com.android.systemui.shade.ui.composable.Shade
import com.android.systemui.shade.ui.composable.ShadeHeader
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow

@@ -65,6 +67,7 @@ constructor(
        val viewModel =
            rememberViewModel("edit_mode_scene_view_model") { contentViewModelFactory.create() }

        Box(modifier = modifier.fillMaxSize()) {
            Box(
                modifier =
                    Modifier.fillMaxSize()
@@ -72,6 +75,13 @@ constructor(
                        .background(colorResource(R.color.shade_scrim_background_dark))
            )

        EditMode(viewModel.editModeViewModel, modifier.testTag("edit_mode_scene"))
            EditMode(
                viewModel.editModeViewModel,
                Modifier.fillMaxSize()
                    .testTag("edit_mode_scene")
                    .padding(horizontal = QuickSettingsShade.Dimensions.Padding)
                    .padding(top = ShadeHeader.Dimensions.StatusBarHeight),
            )
        }
    }
}
+12 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.graphicsLayer
@@ -258,6 +259,17 @@ private fun ContentScope.SingleShade(
    mediaHost.expansion = if (usingCollapsedLandscapeMedia && isLandscape()) COLLAPSED else EXPANDED

    var maxNotifScrimTop by remember { mutableIntStateOf(0) }
    val tileSquishiness by
        animateContentFloatAsState(
            value = 1f,
            key = QuickSettings.SharedValues.TilesSquishiness,
            canOverflow = false,
        )

    LaunchedEffect(Unit) {
        snapshotFlow { tileSquishiness }.collect { viewModel.setTileSquishiness(it) }
    }

    val shouldPunchHoleBehindScrim =
        layoutState.isTransitioningBetween(Scenes.Gone, Scenes.Shade) ||
            layoutState.isTransitioning(from = Scenes.Lockscreen, to = Scenes.Shade)
+13 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.lifecycle.activateIn
import com.android.systemui.media.controls.data.repository.mediaFilterRepository
import com.android.systemui.media.controls.shared.model.MediaData
import com.android.systemui.qs.panels.domain.interactor.tileSquishinessInteractor
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.model.Overlays
@@ -221,6 +222,18 @@ class ShadeSceneContentViewModelTest : SysuiTestCase() {
            assertThat(underTest.isQsEnabled).isFalse()
        }

    @Test
    fun squishiness() =
        kosmos.runTest {
            val squishiness by collectLastValue(tileSquishinessInteractor.squishiness)

            underTest.setTileSquishiness(0f)
            assertThat(squishiness).isWithin(0.0001f).of(0.1f)

            underTest.setTileSquishiness(1f)
            assertThat(squishiness).isEqualTo(1f)
        }

    private fun Kosmos.prepareConfiguration(): Int {
        val configuration = context.resources.configuration
        configuration.setLayoutDirection(Locale.US)
+13 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.shade.ui.viewmodel

import androidx.annotation.FloatRange
import androidx.compose.runtime.getValue
import androidx.lifecycle.LifecycleOwner
import com.android.app.tracing.coroutines.launchTraced as launch
@@ -26,6 +27,7 @@ import com.android.systemui.lifecycle.Hydrator
import com.android.systemui.media.controls.domain.pipeline.interactor.MediaCarouselInteractor
import com.android.systemui.qs.FooterActionsController
import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel
import com.android.systemui.qs.panels.domain.interactor.TileSquishinessInteractor
import com.android.systemui.qs.panels.ui.viewmodel.QuickQuickSettingsViewModel
import com.android.systemui.qs.ui.adapter.QSSceneAdapter
import com.android.systemui.scene.domain.interactor.SceneInteractor
@@ -69,6 +71,7 @@ constructor(
    unfoldTransitionInteractor: UnfoldTransitionInteractor,
    deviceEntryInteractor: DeviceEntryInteractor,
    private val sceneInteractor: SceneInteractor,
    private val tileSquishinessInteractor: TileSquishinessInteractor,
) : ExclusiveActivatable() {

    private val hydrator = Hydrator("ShadeSceneContentViewModel.hydrator")
@@ -149,8 +152,18 @@ constructor(
        sceneInteractor.changeScene(Scenes.Lockscreen, "Shade empty space clicked.")
    }

    /**
     * Sets the squishiness for the tiles. The squishiness will be mapped between `[0.1, 1.0]` to
     * prevent visual artifacts caused by squishiness being too close to 0.
     */
    fun setTileSquishiness(@FloatRange(0.0, 1.0) squishiness: Float) {
        tileSquishinessInteractor.setSquishinessValue(squishiness.constrainSquishiness())
    }

    @AssistedFactory
    interface Factory {
        fun create(): ShadeSceneContentViewModel
    }
}

private fun Float.constrainSquishiness(): Float = (0.1f + this * 0.9f).coerceIn(0f, 1f)
+2 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import com.android.systemui.kosmos.testDispatcher
import com.android.systemui.media.controls.domain.pipeline.interactor.mediaCarouselInteractor
import com.android.systemui.qs.footerActionsController
import com.android.systemui.qs.footerActionsViewModelFactory
import com.android.systemui.qs.panels.domain.interactor.tileSquishinessInteractor
import com.android.systemui.qs.panels.ui.viewmodel.quickQuickSettingsViewModelFactory
import com.android.systemui.qs.ui.adapter.qsSceneAdapter
import com.android.systemui.scene.domain.interactor.sceneInteractor
@@ -46,6 +47,7 @@ val Kosmos.shadeSceneContentViewModel: ShadeSceneContentViewModel by Fixture {
        unfoldTransitionInteractor = unfoldTransitionInteractor,
        deviceEntryInteractor = deviceEntryInteractor,
        sceneInteractor = sceneInteractor,
        tileSquishinessInteractor = tileSquishinessInteractor,
    )
}