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

Commit 29466d4c authored by Fabián Kozynski's avatar Fabián Kozynski
Browse files

Add systemGestureExclude rect to brightness slider

This change creates a generic modifier that can be used to exclude
left/right swipe from the edges of the device for components in the
QuickSettingsShade by adding the corresponding padding.

Also, makes sure that brightness has the correct height (include the
border as part of the internal padding.

Test: manual, legacy and dual shade
Flag: com.android.systemui.qs_ui_refactor_compose_fragment
Flag: com.android.systemui.scene_container
Fixes: 395701064
Change-Id: Ib9505ac95399823bde16b6c8223543fec823c5b1
parent e2820723
Loading
Loading
Loading
Loading
+26 −5
Original line number Diff line number Diff line
@@ -26,16 +26,19 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.requiredHeight
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.systemGestureExclusion
import androidx.compose.foundation.verticalScroll
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.geometry.Rect
import androidx.compose.ui.geometry.Size
import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.layout.boundsInWindow
import androidx.compose.ui.layout.onPlaced
@@ -59,6 +62,7 @@ import com.android.systemui.qs.panels.ui.compose.EditMode
import com.android.systemui.qs.panels.ui.compose.TileDetails
import com.android.systemui.qs.panels.ui.compose.TileGrid
import com.android.systemui.qs.panels.ui.compose.toolbar.Toolbar
import com.android.systemui.qs.ui.composable.QuickSettingsShade.systemGestureExclusionInShade
import com.android.systemui.qs.ui.viewmodel.QuickSettingsContainerViewModel
import com.android.systemui.qs.ui.viewmodel.QuickSettingsShadeOverlayActionsViewModel
import com.android.systemui.qs.ui.viewmodel.QuickSettingsShadeOverlayContentViewModel
@@ -254,9 +258,7 @@ fun ContentScope.QuickSettingsLayout(
            BrightnessSliderContainer(
                viewModel = viewModel.brightnessSliderViewModel,
                containerColor = OverlayShade.Colors.PanelBackground,
                modifier =
                    Modifier.fillMaxWidth()
                        .height(QuickSettingsShade.Dimensions.BrightnessSliderHeight),
                modifier = Modifier.systemGestureExclusionInShade().fillMaxWidth(),
            )

            Box {
@@ -280,6 +282,25 @@ object QuickSettingsShade {
    object Dimensions {
        val Padding = 16.dp
        val ToolbarHeight = 48.dp
        val BrightnessSliderHeight = 64.dp
    }

    /**
     * Applies system gesture exclusion to a component adding [Dimensions.Padding] to left and
     * right.
     */
    @Composable
    fun Modifier.systemGestureExclusionInShade(): Modifier {
        val density = LocalDensity.current
        return systemGestureExclusion { layoutCoordinates ->
            val sidePadding = with(density) { Dimensions.Padding.toPx() }
            Rect(
                offset = Offset(x = -sidePadding, y = 0f),
                size =
                    Size(
                        width = layoutCoordinates.size.width.toFloat() + 2 * sidePadding,
                        height = layoutCoordinates.size.height.toFloat(),
                    ),
            )
        }
    }
}
+8 −1
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.compose.modifiers.padding
import com.android.compose.ui.graphics.drawInOverlay
import com.android.systemui.Flags
import com.android.systemui.biometrics.Utils.toBitmap
@@ -348,7 +349,13 @@ fun BrightnessSliderContainer(

    DisposableEffect(Unit) { onDispose { viewModel.setIsDragging(false) } }

    Box(modifier = modifier.fillMaxWidth().sysuiResTag("brightness_slider")) {
    Box(
        modifier =
            modifier
                .padding(vertical = { SliderBackgroundFrameSize.height.roundToPx() })
                .fillMaxWidth()
                .sysuiResTag("brightness_slider")
    ) {
        BrightnessSlider(
            gammaValue = gamma,
            valueRange = viewModel.minBrightness.value..viewModel.maxBrightness.value,
+2 −5
Original line number Diff line number Diff line
@@ -41,7 +41,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.requiredHeightIn
@@ -126,6 +125,7 @@ import com.android.systemui.qs.panels.ui.compose.QuickQuickSettings
import com.android.systemui.qs.panels.ui.compose.TileGrid
import com.android.systemui.qs.shared.ui.ElementKeys
import com.android.systemui.qs.ui.composable.QuickSettingsShade
import com.android.systemui.qs.ui.composable.QuickSettingsShade.systemGestureExclusionInShade
import com.android.systemui.qs.ui.composable.QuickSettingsTheme
import com.android.systemui.res.R
import com.android.systemui.util.LifecycleFragment
@@ -695,10 +695,7 @@ constructor(
                                BrightnessSliderContainer(
                                    viewModel = containerViewModel.brightnessSliderViewModel,
                                    modifier =
                                        Modifier.fillMaxWidth()
                                            .height(
                                                QuickSettingsShade.Dimensions.BrightnessSliderHeight
                                            ),
                                        Modifier.systemGestureExclusionInShade().fillMaxWidth(),
                                )
                            }
                        val TileGrid =
+1 −6
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.systemui.settings.brightness

import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.ComposeView
@@ -26,7 +25,6 @@ import com.android.compose.theme.PlatformTheme
import com.android.systemui.brightness.ui.compose.BrightnessSliderContainer
import com.android.systemui.brightness.ui.viewmodel.BrightnessSliderViewModel
import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.qs.ui.composable.QuickSettingsShade

object ComposeDialogComposableProvider {

@@ -46,10 +44,7 @@ private fun BrightnessSliderForDialog(
        rememberViewModel(traceName = "BrightnessDialog.viewModel") {
            brightnessSliderViewModelFactory.create(false)
        }
    BrightnessSliderContainer(
        viewModel = viewModel,
        Modifier.fillMaxWidth().height(QuickSettingsShade.Dimensions.BrightnessSliderHeight),
    )
    BrightnessSliderContainer(viewModel = viewModel, Modifier.fillMaxWidth())
}

class ComposableProvider(