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

Commit 170ed9de authored by Olivier St-Onge's avatar Olivier St-Onge Committed by Android (Google) Code Review
Browse files

Merge changes I6280618e,I11f12cc7,I18b90c1e,Ia70520d4 into main

* changes:
  Update tile and brightness slider colors
  Autoscroll to the top of the edit page when resetting tiles
  Adjust the corner radius of containers in edit mode
  Move the window inset spacer at the bottom of the edit mode column
parents 421044be 03ef3285
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -450,7 +450,7 @@ object BrightnessSliderMotionTestKeys {
private fun colors(): SliderColors {
private fun colors(): SliderColors {
    return SliderDefaults.colors()
    return SliderDefaults.colors()
        .copy(
        .copy(
            inactiveTrackColor = LocalAndroidColorScheme.current.surfaceEffect2,
            inactiveTrackColor = LocalAndroidColorScheme.current.surfaceEffect1,
            activeTickColor = MaterialTheme.colorScheme.onPrimary,
            activeTickColor = MaterialTheme.colorScheme.onPrimary,
            inactiveTickColor = MaterialTheme.colorScheme.onSurface,
            inactiveTickColor = MaterialTheme.colorScheme.onSurface,
        )
        )
+34 −19
Original line number Original line Diff line number Diff line
@@ -106,6 +106,8 @@ import androidx.compose.ui.geometry.CornerRadius
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.geometry.isSpecified
import androidx.compose.ui.geometry.isSpecified
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.layout.MeasureScope
import androidx.compose.ui.layout.MeasureScope
@@ -148,6 +150,7 @@ import com.android.systemui.qs.panels.ui.compose.infinitegrid.CommonTileDefaults
import com.android.systemui.qs.panels.ui.compose.infinitegrid.CommonTileDefaults.ToggleTargetSize
import com.android.systemui.qs.panels.ui.compose.infinitegrid.CommonTileDefaults.ToggleTargetSize
import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.AUTO_SCROLL_DISTANCE
import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.AUTO_SCROLL_DISTANCE
import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.AUTO_SCROLL_SPEED
import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.AUTO_SCROLL_SPEED
import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.AVAILABLE_TILES_GRID_ALPHA
import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.AvailableTilesGridMinHeight
import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.AvailableTilesGridMinHeight
import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.CurrentTilesGridPadding
import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.CurrentTilesGridPadding
import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.GridBackgroundCornerRadius
import com.android.systemui.qs.panels.ui.compose.infinitegrid.EditModeTileDefaults.GridBackgroundCornerRadius
@@ -240,10 +243,11 @@ sealed interface EditAction {
fun DefaultEditTileGrid(
fun DefaultEditTileGrid(
    listState: EditTileListState,
    listState: EditTileListState,
    allTiles: List<EditTileViewModel>,
    allTiles: List<EditTileViewModel>,
    modifier: Modifier,
    snapshotViewModel: InfiniteGridSnapshotViewModel,
    snapshotViewModel: InfiniteGridSnapshotViewModel,
    onStopEditing: () -> Unit,
    modifier: Modifier = Modifier,
    onEditAction: (EditAction) -> Unit,
    scrollState: ScrollState = rememberScrollState(),
    onStopEditing: () -> Unit = {},
    onEditAction: (EditAction) -> Unit = {},
) {
) {
    val selectionState = rememberSelectionState()
    val selectionState = rememberSelectionState()


@@ -290,8 +294,6 @@ fun DefaultEditTileGrid(
        CompositionLocalProvider(
        CompositionLocalProvider(
            LocalOverscrollFactory provides rememberOffsetOverscrollEffectFactory()
            LocalOverscrollFactory provides rememberOffsetOverscrollEffectFactory()
        ) {
        ) {
            val scrollState = rememberScrollState()

            AutoScrollGrid(listState, scrollState, innerPadding)
            AutoScrollGrid(listState, scrollState, innerPadding)


            LaunchedEffect(listState.dragType) {
            LaunchedEffect(listState.dragType) {
@@ -385,6 +387,8 @@ fun DefaultEditTileGrid(
                        }
                        }
                    }
                    }
                }
                }

                Spacer(Modifier.windowInsetsBottomHeight(WindowInsets.systemBars))
            }
            }
        }
        }
    }
    }
@@ -593,24 +597,35 @@ private fun AvailableTileGrid(


    // Available tiles
    // Available tiles
    Column(
    Column(
        verticalArrangement = spacedBy(TileArrangementPadding),
        verticalArrangement = spacedBy(2.dp),
        horizontalAlignment = Alignment.Start,
        horizontalAlignment = Alignment.Start,
        modifier =
        modifier =
            Modifier.fillMaxWidth().wrapContentHeight().testTag(AVAILABLE_TILES_GRID_TEST_TAG),
            Modifier.fillMaxWidth().wrapContentHeight().testTag(AVAILABLE_TILES_GRID_TEST_TAG),
    ) {
    ) {
        groupedTileSpecs.forEach { (category, tileSpecs) ->
        groupedTileSpecs.entries.forEachIndexed { index, (category, tileSpecs) ->
            key(category) {
            key(category) {
                val surfaceColor = MaterialTheme.colorScheme.surface
                val shape =
                    when (index) {
                        0 ->
                            RoundedCornerShape(
                                topStart = GridBackgroundCornerRadius,
                                topEnd = GridBackgroundCornerRadius,
                            )
                        groupedTileSpecs.size - 1 ->
                            RoundedCornerShape(
                                bottomStart = GridBackgroundCornerRadius,
                                bottomEnd = GridBackgroundCornerRadius,
                            )
                        else -> RectangleShape
                    }
                Column(
                Column(
                    verticalArrangement = spacedBy(16.dp),
                    verticalArrangement = spacedBy(16.dp),
                    modifier =
                    modifier =
                        Modifier.drawBehind {
                        Modifier.background(
                                drawRoundRect(
                                brush = SolidColor(MaterialTheme.colorScheme.surface),
                                    surfaceColor,
                                shape = shape,
                                    cornerRadius = CornerRadius(GridBackgroundCornerRadius.toPx()),
                                alpha = AVAILABLE_TILES_GRID_ALPHA,
                                    alpha = .32f,
                            )
                            )
                            }
                            .padding(16.dp),
                            .padding(16.dp),
                ) {
                ) {
                    CategoryHeader(
                    CategoryHeader(
@@ -642,11 +657,10 @@ private fun AvailableTileGrid(
                }
                }
            }
            }
        }
        }
        Spacer(Modifier.windowInsetsBottomHeight(WindowInsets.systemBars))
    }
    }
}
}


fun gridHeight(rows: Int, tileHeight: Dp, tilePadding: Dp, gridPadding: Dp): Dp {
private fun gridHeight(rows: Int, tileHeight: Dp, tilePadding: Dp, gridPadding: Dp): Dp {
    return ((tileHeight + tilePadding) * rows) + gridPadding * 2
    return ((tileHeight + tilePadding) * rows) + gridPadding * 2
}
}


@@ -1060,14 +1074,15 @@ private object EditModeTileDefaults {
    const val PLACEHOLDER_ALPHA = .3f
    const val PLACEHOLDER_ALPHA = .3f
    const val AUTO_SCROLL_DISTANCE = 100
    const val AUTO_SCROLL_DISTANCE = 100
    const val AUTO_SCROLL_SPEED = 2 // 2ms per pixel
    const val AUTO_SCROLL_SPEED = 2 // 2ms per pixel
    const val AVAILABLE_TILES_GRID_ALPHA = .32f
    val CurrentTilesGridPadding = 10.dp
    val CurrentTilesGridPadding = 10.dp
    val AvailableTilesGridMinHeight = 200.dp
    val AvailableTilesGridMinHeight = 200.dp
    val GridBackgroundCornerRadius = 42.dp
    val GridBackgroundCornerRadius = 28.dp


    @Composable
    @Composable
    fun editTileColors(): TileColors =
    fun editTileColors(): TileColors =
        TileColors(
        TileColors(
            background = LocalAndroidColorScheme.current.surfaceEffect2,
            background = LocalAndroidColorScheme.current.surfaceEffect1,
            iconBackground = Color.Transparent,
            iconBackground = Color.Transparent,
            label = MaterialTheme.colorScheme.onSurface,
            label = MaterialTheme.colorScheme.onSurface,
            secondaryLabel = MaterialTheme.colorScheme.onSurface,
            secondaryLabel = MaterialTheme.colorScheme.onSurface,
+8 −0
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.systemui.qs.panels.ui.compose.infinitegrid
package com.android.systemui.qs.panels.ui.compose.infinitegrid


import androidx.compose.foundation.rememberScrollState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.derivedStateOf
@@ -49,6 +50,7 @@ import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.qs.shared.ui.ElementKeys.toElementKey
import com.android.systemui.qs.shared.ui.ElementKeys.toElementKey
import com.android.systemui.res.R
import com.android.systemui.res.R
import javax.inject.Inject
import javax.inject.Inject
import kotlinx.coroutines.launch


@SysUISingleton
@SysUISingleton
class InfiniteGridLayout
class InfiniteGridLayout
@@ -162,11 +164,16 @@ constructor(
            rememberViewModel("InfiniteGridLayout.EditTileGrid") {
            rememberViewModel("InfiniteGridLayout.EditTileGrid") {
                viewModel.snapshotViewModelFactory.create()
                viewModel.snapshotViewModelFactory.create()
            }
            }
        val scrollState = rememberScrollState()
        val coroutineScope = rememberCoroutineScope()
        val dialogDelegate =
        val dialogDelegate =
            rememberViewModel("InfiniteGridLayout.EditTileGrid") {
            rememberViewModel("InfiniteGridLayout.EditTileGrid") {
                viewModel.resetDialogDelegateFactory.create {
                viewModel.resetDialogDelegateFactory.create {
                    // Clear the stack of snapshots on reset
                    // Clear the stack of snapshots on reset
                    snapshotViewModel.clearStack()
                    snapshotViewModel.clearStack()

                    // Automatically scroll to the top on reset
                    coroutineScope.launch { scrollState.animateScrollTo(0) }
                }
                }
            }
            }
        val columns = columnsViewModel.columns
        val columns = columnsViewModel.columns
@@ -189,6 +196,7 @@ constructor(
            listState = listState,
            listState = listState,
            allTiles = tiles,
            allTiles = tiles,
            modifier = modifier,
            modifier = modifier,
            scrollState = scrollState,
            snapshotViewModel = snapshotViewModel,
            snapshotViewModel = snapshotViewModel,
            onStopEditing = onStopEditing,
            onStopEditing = onStopEditing,
        ) { action ->
        ) { action ->
+6 −6
Original line number Original line Diff line number Diff line
@@ -400,7 +400,7 @@ private object TileDefaults {
    @ReadOnlyComposable
    @ReadOnlyComposable
    fun activeDualTargetTileColors(): TileColors =
    fun activeDualTargetTileColors(): TileColors =
        TileColors(
        TileColors(
            background = LocalAndroidColorScheme.current.surfaceEffect2,
            background = LocalAndroidColorScheme.current.surfaceEffect1,
            iconBackground = MaterialTheme.colorScheme.primary,
            iconBackground = MaterialTheme.colorScheme.primary,
            label = MaterialTheme.colorScheme.onSurface,
            label = MaterialTheme.colorScheme.onSurface,
            secondaryLabel = MaterialTheme.colorScheme.onSurface,
            secondaryLabel = MaterialTheme.colorScheme.onSurface,
@@ -411,8 +411,8 @@ private object TileDefaults {
    @ReadOnlyComposable
    @ReadOnlyComposable
    fun inactiveDualTargetTileColors(): TileColors =
    fun inactiveDualTargetTileColors(): TileColors =
        TileColors(
        TileColors(
            background = LocalAndroidColorScheme.current.surfaceEffect2,
            background = LocalAndroidColorScheme.current.surfaceEffect1,
            iconBackground = LocalAndroidColorScheme.current.surfaceEffect3,
            iconBackground = LocalAndroidColorScheme.current.surfaceEffect2,
            label = MaterialTheme.colorScheme.onSurface,
            label = MaterialTheme.colorScheme.onSurface,
            secondaryLabel = MaterialTheme.colorScheme.onSurface,
            secondaryLabel = MaterialTheme.colorScheme.onSurface,
            icon = MaterialTheme.colorScheme.onSurface,
            icon = MaterialTheme.colorScheme.onSurface,
@@ -422,7 +422,7 @@ private object TileDefaults {
    @ReadOnlyComposable
    @ReadOnlyComposable
    fun inactiveTileColors(): TileColors =
    fun inactiveTileColors(): TileColors =
        TileColors(
        TileColors(
            background = LocalAndroidColorScheme.current.surfaceEffect2,
            background = LocalAndroidColorScheme.current.surfaceEffect1,
            iconBackground = Color.Transparent,
            iconBackground = Color.Transparent,
            label = MaterialTheme.colorScheme.onSurface,
            label = MaterialTheme.colorScheme.onSurface,
            secondaryLabel = MaterialTheme.colorScheme.onSurface,
            secondaryLabel = MaterialTheme.colorScheme.onSurface,
@@ -433,8 +433,8 @@ private object TileDefaults {
    @ReadOnlyComposable
    @ReadOnlyComposable
    fun unavailableTileColors(): TileColors {
    fun unavailableTileColors(): TileColors {
        return TileColors(
        return TileColors(
            background = LocalAndroidColorScheme.current.surfaceEffect2,
            background = LocalAndroidColorScheme.current.surfaceEffect1,
            iconBackground = LocalAndroidColorScheme.current.surfaceEffect2,
            iconBackground = LocalAndroidColorScheme.current.surfaceEffect1,
            label = MaterialTheme.colorScheme.onSurface,
            label = MaterialTheme.colorScheme.onSurface,
            secondaryLabel = MaterialTheme.colorScheme.onSurface,
            secondaryLabel = MaterialTheme.colorScheme.onSurface,
            icon = MaterialTheme.colorScheme.onSurface,
            icon = MaterialTheme.colorScheme.onSurface,