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

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

Merge "Block drag gestures from available tiles" into main

parents 612e550d d331772a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@
 * limitations under the License.
 */

package com.android.systemui.qs.panels.ui.compose.icons
package com.android.systemui.common.ui.icons

import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.PathFillType
@@ -25,7 +25,7 @@ import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.path
import androidx.compose.ui.unit.dp

public val Edit: ImageVector
val Edit: ImageVector
    get() {
        if (_Edit != null) {
            return _Edit!!
+88 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.common.ui.icons

import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.path
import androidx.compose.ui.unit.dp

val TileMedium: ImageVector
    get() {
        if (_TileMedium != null) {
            return _TileMedium!!
        }
        _TileMedium =
            ImageVector.Builder(
                    name = "TileMedium",
                    defaultWidth = 24.dp,
                    defaultHeight = 24.dp,
                    viewportWidth = 960f,
                    viewportHeight = 960f,
                )
                .apply {
                    path(fill = SolidColor(Color.Black)) {
                        moveTo(120f, 720f)
                        lineTo(120f, 560f)
                        quadTo(120f, 543f, 131.5f, 531.5f)
                        quadTo(143f, 520f, 160f, 520f)
                        lineTo(400f, 520f)
                        quadTo(417f, 520f, 428.5f, 531.5f)
                        quadTo(440f, 543f, 440f, 560f)
                        lineTo(440f, 720f)
                        quadTo(440f, 737f, 428.5f, 748.5f)
                        quadTo(417f, 760f, 400f, 760f)
                        lineTo(160f, 760f)
                        quadTo(143f, 760f, 131.5f, 748.5f)
                        quadTo(120f, 737f, 120f, 720f)
                        close()
                        moveTo(520f, 720f)
                        lineTo(520f, 560f)
                        quadTo(520f, 543f, 531.5f, 531.5f)
                        quadTo(543f, 520f, 560f, 520f)
                        lineTo(800f, 520f)
                        quadTo(817f, 520f, 828.5f, 531.5f)
                        quadTo(840f, 543f, 840f, 560f)
                        lineTo(840f, 720f)
                        quadTo(840f, 737f, 828.5f, 748.5f)
                        quadTo(817f, 760f, 800f, 760f)
                        lineTo(560f, 760f)
                        quadTo(543f, 760f, 531.5f, 748.5f)
                        quadTo(520f, 737f, 520f, 720f)
                        close()
                        moveTo(120f, 400f)
                        lineTo(120f, 240f)
                        quadTo(120f, 223f, 131.5f, 211.5f)
                        quadTo(143f, 200f, 160f, 200f)
                        lineTo(800f, 200f)
                        quadTo(817f, 200f, 828.5f, 211.5f)
                        quadTo(840f, 223f, 840f, 240f)
                        lineTo(840f, 400f)
                        quadTo(840f, 417f, 828.5f, 428.5f)
                        quadTo(817f, 440f, 800f, 440f)
                        lineTo(160f, 440f)
                        quadTo(143f, 440f, 131.5f, 428.5f)
                        quadTo(120f, 417f, 120f, 400f)
                        close()
                    }
                }
                .build()
        return _TileMedium!!
    }

private var _TileMedium: ImageVector? = null
+81 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.common.ui.icons

import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.path
import androidx.compose.ui.unit.dp

val Undo: ImageVector
    get() {
        if (_Undo != null) {
            return _Undo!!
        }
        _Undo =
            ImageVector.Builder(
                    name = "Undo",
                    defaultWidth = 24.dp,
                    defaultHeight = 24.dp,
                    viewportWidth = 960f,
                    viewportHeight = 960f,
                    autoMirror = true,
                )
                .apply {
                    path(fill = SolidColor(Color.Black)) {
                        moveTo(320f, 760f)
                        quadTo(303f, 760f, 291.5f, 748.5f)
                        quadTo(280f, 737f, 280f, 720f)
                        quadTo(280f, 703f, 291.5f, 691.5f)
                        quadTo(303f, 680f, 320f, 680f)
                        lineTo(564f, 680f)
                        quadTo(627f, 680f, 673.5f, 640f)
                        quadTo(720f, 600f, 720f, 540f)
                        quadTo(720f, 480f, 673.5f, 440f)
                        quadTo(627f, 400f, 564f, 400f)
                        lineTo(312f, 400f)
                        lineTo(388f, 476f)
                        quadTo(399f, 487f, 399f, 504f)
                        quadTo(399f, 521f, 388f, 532f)
                        quadTo(377f, 543f, 360f, 543f)
                        quadTo(343f, 543f, 332f, 532f)
                        lineTo(188f, 388f)
                        quadTo(182f, 382f, 179.5f, 375f)
                        quadTo(177f, 368f, 177f, 360f)
                        quadTo(177f, 352f, 179.5f, 345f)
                        quadTo(182f, 338f, 188f, 332f)
                        lineTo(332f, 188f)
                        quadTo(343f, 177f, 360f, 177f)
                        quadTo(377f, 177f, 388f, 188f)
                        quadTo(399f, 199f, 399f, 216f)
                        quadTo(399f, 233f, 388f, 244f)
                        lineTo(312f, 320f)
                        lineTo(564f, 320f)
                        quadTo(661f, 320f, 730.5f, 383f)
                        quadTo(800f, 446f, 800f, 540f)
                        quadTo(800f, 634f, 730.5f, 697f)
                        quadTo(661f, 760f, 564f, 760f)
                        lineTo(320f, 760f)
                        close()
                    }
                }
                .build()
        return _Undo!!
    }

private var _Undo: ImageVector? = null
+17 −4
Original line number Diff line number Diff line
@@ -154,6 +154,7 @@ import com.android.compose.theme.LocalAndroidColorScheme
import com.android.compose.ui.graphics.painter.rememberDrawablePainter
import com.android.systemui.common.shared.model.Icon
import com.android.systemui.common.ui.compose.load
import com.android.systemui.common.ui.icons.Undo
import com.android.systemui.qs.flags.QsEditModeTabs
import com.android.systemui.qs.panels.shared.model.SizedTileImpl
import com.android.systemui.qs.panels.ui.compose.DragAndDropState
@@ -305,7 +306,7 @@ fun DefaultEditTileGrid(
                            ),
                    ) {
                        Icon(
                            Icons.AutoMirrored.Default.Undo,
                            Undo,
                            contentDescription =
                                stringResource(id = com.android.internal.R.string.undo),
                        )
@@ -349,6 +350,7 @@ fun DefaultEditTileGrid(
                        listState = listState,
                        selectionState = selectionState,
                        onEditAction = onEditAction,
                        canLayoutTile = editModeTabViewModel.selectedTab.isTilesLayoutAllowed,
                        showAvailableTiles = editModeTabViewModel.selectedTab.isTilesEditingAllowed,
                    )
                }
@@ -381,6 +383,7 @@ fun DefaultEditTileGrid(
                        listState = listState,
                        selectionState = selectionState,
                        onEditAction = onEditAction,
                        canLayoutTile = true,
                        showAvailableTiles =
                            !(listState.dragInProgress || selectionState.placementEnabled) ||
                                listState.dragType == DragType.Move,
@@ -477,7 +480,10 @@ private fun EditModeScrollableColumnWithTabs(
            content()
        }

        EditModeTabs(editModeTabViewModel) { selectionState.unSelect() }
        // Disable tab selection while a drag is in progress
        EditModeTabs(editModeTabViewModel, enabled = !listState.dragInProgress) {
            selectionState.unSelect()
        }

        Spacer(Modifier.windowInsetsBottomHeight(WindowInsets.systemBars))
    }
@@ -694,6 +700,7 @@ private fun AnimatedAvailableTilesGrid(
    listState: EditTileListState,
    selectionState: MutableSelectionState,
    showAvailableTiles: Boolean,
    canLayoutTile: Boolean,
    onEditAction: (EditAction) -> Unit,
    modifier: Modifier = Modifier,
) {
@@ -720,6 +727,7 @@ private fun AnimatedAvailableTilesGrid(
                    allTiles,
                    selectionState,
                    listState.columns,
                    canLayoutTile = canLayoutTile,
                    { onEditAction(EditAction.AddTile(it)) }, // Add to the end
                    listState,
                )
@@ -751,6 +759,7 @@ private fun AvailableTileGrid(
    tiles: List<EditTileViewModel>,
    selectionState: MutableSelectionState,
    columns: Int,
    canLayoutTile: Boolean,
    onAddTile: (TileSpec) -> Unit,
    dragAndDropState: DragAndDropState,
) {
@@ -811,6 +820,7 @@ private fun AvailableTileGrid(
                                        cell = viewModel,
                                        dragAndDropState = dragAndDropState,
                                        selectionState = selectionState,
                                        canLayoutTile = canLayoutTile,
                                        onAddTile = onAddTile,
                                        modifier = Modifier.weight(1f).fillMaxHeight(),
                                    )
@@ -1118,6 +1128,7 @@ private fun AvailableTileGridCell(
    cell: EditTileViewModel,
    dragAndDropState: DragAndDropState,
    selectionState: MutableSelectionState,
    canLayoutTile: Boolean,
    onAddTile: (TileSpec) -> Unit,
    modifier: Modifier = Modifier,
) {
@@ -1129,8 +1140,10 @@ private fun AvailableTileGridCell(
    val colors = EditModeTileDefaults.editTileColors()
    val onClick: () -> Unit = {
        onAddTile(cell.tileSpec)
        if (canLayoutTile) {
            selectionState.select(cell.tileSpec)
        }
    }
    val clickLabel =
        stringResource(id = R.string.accessibility_qs_edit_named_tile_add_action, cell.label.text)

@@ -1157,7 +1170,7 @@ private fun AvailableTileGridCell(
    ) {
        Box(Modifier.fillMaxWidth().height(TileHeight)) {
            val draggableModifier =
                if (cell.isCurrent) {
                if (cell.isCurrent || !canLayoutTile) {
                    Modifier
                } else {
                    Modifier.dragAndDropTileSource(
+3 −2
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ import com.android.systemui.qs.panels.ui.viewmodel.EditModeTabViewModel
@Composable
fun EditModeTabs(
    viewModel: EditModeTabViewModel,
    enabled: Boolean,
    modifier: Modifier = Modifier,
    onTabChanged: () -> Unit = {},
) {
@@ -58,7 +59,7 @@ fun EditModeTabs(
    val selectedButtonColor = LocalAndroidColorScheme.current.surfaceEffect2
    HorizontalFloatingToolbar(
        modifier = modifier.height(60.dp),
        expanded = true,
        expanded = false,
        contentPadding = PaddingValues(horizontal = 7.dp, vertical = 8.dp),
        colors =
            FloatingToolbarDefaults.standardFloatingToolbarColors(
@@ -73,7 +74,7 @@ fun EditModeTabs(
                verticalAlignment = Alignment.CenterVertically,
                modifier =
                    Modifier.fillMaxHeight()
                        .clickable {
                        .clickable(enabled = enabled) {
                            if (!isSelected.currentState) {
                                onTabChanged()
                            }
Loading