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

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

Merge "Support RTL for edit mode" into main

parents f5212b6f b2f3da5e
Loading
Loading
Loading
Loading
+25 −11
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.graphics.ColorProducer
import androidx.compose.ui.graphics.CompositingStrategy
import androidx.compose.ui.graphics.drawscope.DrawScope
import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
@@ -79,6 +80,7 @@ import androidx.compose.ui.semantics.stateDescription
import androidx.compose.ui.semantics.toggleableState
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import com.android.compose.modifiers.size
import com.android.compose.modifiers.thenIf
@@ -101,6 +103,7 @@ import com.android.systemui.qs.panels.ui.compose.infinitegrid.CommonTileDefaults
import com.android.systemui.qs.panels.ui.viewmodel.AccessibilityUiState
import com.android.systemui.qs.ui.compose.borderOnFocus
import com.android.systemui.res.R
import kotlin.math.abs

private const val TEST_TAG_TOGGLE = "qs_tile_toggle_target"

@@ -330,17 +333,19 @@ private fun TileLabel(
                    if (textSize > size.width) {
                        // Draw a blur over the end of the text
                        val edgeWidthPx = TileLabelBlurWidth.toPx()
                        drawRect(
                            topLeft = Offset(size.width - edgeWidthPx, 0f),
                            size = Size(edgeWidthPx, size.height),
                            brush =
                                Brush.horizontalGradient(
                        if (layoutDirection == LayoutDirection.Rtl) {
                            drawFadedEdge(
                                startX = 0f,
                                endX = edgeWidthPx,
                                colors = listOf(Color.Transparent, Color.Black),
                                    startX = size.width,
                                    endX = size.width - edgeWidthPx,
                                ),
                            blendMode = BlendMode.DstIn,
                            )
                        } else {
                            drawFadedEdge(
                                startX = size.width - edgeWidthPx,
                                endX = size.width,
                                colors = listOf(Color.Black, Color.Transparent),
                            )
                        }
                    }
                }
                .basicMarquee(
@@ -363,6 +368,15 @@ fun Modifier.largeTilePadding(isDualTarget: Boolean = false): Modifier {
    )
}

private fun DrawScope.drawFadedEdge(startX: Float, endX: Float, colors: List<Color>) {
    drawRect(
        topLeft = Offset(startX, 0f),
        size = Size(abs(endX - startX), size.height),
        brush = Brush.horizontalGradient(colors = colors, startX = startX, endX = endX),
        blendMode = BlendMode.DstIn,
    )
}

object CommonTileDefaults {
    val IconSize = 32.dp
    val LargeTileIconSize = 28.dp
+1 −1
Original line number Diff line number Diff line
@@ -971,7 +971,7 @@ fun EditTile(
                        }

                    layout(constraints.maxWidth, constraints.maxHeight) {
                        placeable.place(startPadding.roundToInt(), 0)
                        placeable.placeRelative(startPadding.roundToInt(), 0)
                    }
                }
                .largeTilePadding()
+2 −2
Original line number Diff line number Diff line
@@ -264,7 +264,7 @@ private fun MinimumInteractiveSizeComponent(
                        val radius = constraints.maxHeight / 2f
                        val rotationCenter = Offset(constraints.maxWidth - radius, radius)
                        val position = offsetForAngle(angle(), radius, rotationCenter) + offset()
                        placeable.place(
                        placeable.placeRelative(
                            position.x.roundToInt() - placeable.width / 2,
                            position.y.roundToInt() - placeable.height / 2,
                        )
@@ -285,7 +285,7 @@ private fun Modifier.resizable(selected: Boolean, state: ResizingState): Modifie
            state.anchoredDraggableState.requireOffset().roundToInt().takeIf { !isIdle }
                ?: constraints.maxWidth
        val placeable = measurable.measure(constraints.copy(minWidth = width, maxWidth = width))
        layout(constraints.maxWidth, placeable.height) { placeable.place(0, 0) }
        layout(constraints.maxWidth, placeable.height) { placeable.placeRelative(0, 0) }
    }
}