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

Commit e4337426 authored by Bryce Lee's avatar Bryce Lee
Browse files

Make customization CTA tile adapt to density and text size changes.

This changelist updates the customization CTA tile to better handle
size changes by:
- replacing set padding in favor of layout centering in buttons
- set remaining padding and sizing to stay constant to default sizing
- allow text size to grow within a set scaling factor (0-1.25)
- make middle text scrollable if necessary.

Fixes: 349515421
Fixes: 346672101
Test: manual - verified appearance is ok with text and display scaling
Flag: EXEMPT bugfix
Change-Id: I8379784d00fe69c5232a9330cc4edd8e5a664220
parent 40477f9b
Loading
Loading
Loading
Loading
+49 −33
Original line number Diff line number Diff line
@@ -68,8 +68,10 @@ import androidx.compose.foundation.lazy.grid.GridItemSpan
import androidx.compose.foundation.lazy.grid.LazyGridState
import androidx.compose.foundation.lazy.grid.LazyHorizontalGrid
import androidx.compose.foundation.lazy.grid.rememberLazyGridState
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.selection.selectable
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Check
@@ -91,6 +93,7 @@ import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Text
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.State
import androidx.compose.runtime.derivedStateOf
@@ -143,6 +146,7 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.unit.times
import androidx.compose.ui.util.fastAll
import androidx.compose.ui.viewinterop.AndroidView
@@ -940,7 +944,9 @@ private fun CtaTileInViewModeContent(
        shape = RoundedCornerShape(68.adjustedDp, 34.adjustedDp, 68.adjustedDp, 34.adjustedDp)
    ) {
        Column(
            modifier = Modifier.fillMaxSize().padding(vertical = 32.dp, horizontal = 50.dp),
            modifier =
                Modifier.fillMaxSize()
                    .padding(vertical = 32.adjustedDp, horizontal = 50.adjustedDp),
            verticalArrangement = Arrangement.Center,
            horizontalAlignment = Alignment.CenterHorizontally,
        ) {
@@ -949,52 +955,62 @@ private fun CtaTileInViewModeContent(
                contentDescription = stringResource(R.string.cta_label_to_open_widget_picker),
                modifier = Modifier.size(Dimensions.IconSize).clearAndSetSemantics {},
            )
            Spacer(modifier = Modifier.size(6.dp))
            Spacer(modifier = Modifier.size(6.adjustedDp))
            Text(
                text = stringResource(R.string.cta_label_to_edit_widget),
                style = MaterialTheme.typography.titleLarge,
                fontSize = nonScalableTextSize(22.dp),
                lineHeight = nonScalableTextSize(28.dp),
                modifier = Modifier.verticalScroll(rememberScrollState()).weight(1F)
            )
            Spacer(modifier = Modifier.size(16.dp))
            Spacer(modifier = Modifier.size(16.adjustedDp))
            Row(
                modifier = Modifier.fillMaxWidth().height(56.dp),
                horizontalArrangement = Arrangement.spacedBy(16.dp, Alignment.CenterHorizontally),
                modifier = Modifier.fillMaxWidth().height(56.adjustedDp),
                horizontalArrangement =
                    Arrangement.spacedBy(16.adjustedDp, Alignment.CenterHorizontally),
            ) {
                CompositionLocalProvider(
                    LocalDensity provides
                        Density(
                            LocalDensity.current.density,
                            LocalDensity.current.fontScale.coerceIn(0f, 1.25f)
                        )
                ) {
                    OutlinedButton(
                    modifier = Modifier.fillMaxHeight(),
                        modifier = Modifier.fillMaxHeight().weight(1F),
                        colors =
                            ButtonDefaults.buttonColors(
                                contentColor = colors.onPrimary,
                            ),
                        border = BorderStroke(width = 1.0.dp, color = colors.primaryContainer),
                    contentPadding = PaddingValues(26.dp, 8.dp),
                        onClick = viewModel::onDismissCtaTile,
                        contentPadding = PaddingValues(0.dp, 0.dp, 0.dp, 0.dp),
                    ) {
                        Text(
                            text = stringResource(R.string.cta_tile_button_to_dismiss),
                        fontSize = nonScalableTextSize(14.dp),
                            fontSize = 14.sp,
                        )
                    }
                    Button(
                    modifier = Modifier.fillMaxHeight(),
                        modifier = Modifier.fillMaxHeight().weight(1F),
                        colors =
                            ButtonDefaults.buttonColors(
                                containerColor = colors.primaryContainer,
                                contentColor = colors.onPrimaryContainer,
                            ),
                    contentPadding = PaddingValues(26.dp, 8.dp),
                    onClick = viewModel::onOpenWidgetEditor
                        onClick = viewModel::onOpenWidgetEditor,
                        contentPadding = PaddingValues(0.dp, 0.dp, 0.dp, 0.dp),
                    ) {
                        Text(
                            text = stringResource(R.string.cta_tile_button_to_open_widget_editor),
                        fontSize = nonScalableTextSize(14.dp),
                            fontSize = 14.sp,
                        )
                    }
                }
            }
        }
    }
}

@Composable
private fun WidgetContent(