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

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

Merge "Check the tile's state before handling long clicks" into main

parents 3aa3c412 4556c167
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -77,25 +77,24 @@ fun LargeTileContent(
    colors: TileColors,
    squishiness: () -> Float,
    accessibilityUiState: AccessibilityUiState? = null,
    toggleClickSupported: Boolean = false,
    iconShape: Shape = RoundedCornerShape(CommonTileDefaults.InactiveCornerRadius),
    onClick: () -> Unit = {},
    onLongClick: () -> Unit = {},
    toggleClick: (() -> Unit)? = null,
    onLongClick: (() -> Unit)? = null,
) {
    Row(
        verticalAlignment = Alignment.CenterVertically,
        horizontalArrangement = tileHorizontalArrangement(),
    ) {
        // Icon
        val longPressLabel = longPressLabel()
        val longPressLabel = longPressLabel().takeIf { onLongClick != null }
        Box(
            modifier =
                Modifier.size(CommonTileDefaults.ToggleTargetSize).thenIf(toggleClickSupported) {
                Modifier.size(CommonTileDefaults.ToggleTargetSize).thenIf(toggleClick != null) {
                    Modifier.clip(iconShape)
                        .verticalSquish(squishiness)
                        .background(colors.iconBackground, { 1f })
                        .combinedClickable(
                            onClick = onClick,
                            onClick = toggleClick!!,
                            onLongClick = onLongClick,
                            onLongClickLabel = longPressLabel,
                        )
+6 −7
Original line number Diff line number Diff line
@@ -160,19 +160,18 @@ fun Tile(
                )
            } else {
                val iconShape = TileDefaults.animateIconShape(uiState.state)
                val secondaryClick: (() -> Unit)? =
                    { tile.onSecondaryClick() }.takeIf { uiState.handlesSecondaryClick }
                val longClick: (() -> Unit)? =
                    { tile.onLongClick(expandable) }.takeIf { uiState.handlesLongClick }
                LargeTileContent(
                    label = uiState.label,
                    secondaryLabel = uiState.secondaryLabel,
                    icon = icon,
                    colors = colors,
                    iconShape = iconShape,
                    toggleClickSupported = state.handlesSecondaryClick,
                    onClick = {
                        if (state.handlesSecondaryClick) {
                            tile.onSecondaryClick()
                        }
                    },
                    onLongClick = { tile.onLongClick(expandable) },
                    toggleClick = secondaryClick,
                    onLongClick = longClick,
                    accessibilityUiState = uiState.accessibilityUiState,
                    squishiness = squishiness,
                )
+2 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ data class TileUiState(
    val label: String,
    val secondaryLabel: String,
    val state: Int,
    val handlesLongClick: Boolean,
    val handlesSecondaryClick: Boolean,
    val icon: Supplier<QSTile.Icon?>,
    val accessibilityUiState: AccessibilityUiState,
@@ -86,6 +87,7 @@ fun QSTile.State.toUiState(resources: Resources): TileUiState {
        label = label?.toString() ?: "",
        secondaryLabel = secondaryLabel?.toString() ?: "",
        state = if (disabledByPolicy) Tile.STATE_UNAVAILABLE else state,
        handlesLongClick = handlesLongClick,
        handlesSecondaryClick = handlesSecondaryClick,
        icon = icon?.let { Supplier { icon } } ?: iconSupplier ?: Supplier { null },
        AccessibilityUiState(