Merge "Fix talkback of ANC toggle" into main

This commit is contained in:
Haijie Hong
2024-11-24 13:39:53 +00:00
committed by Android (Google) Code Review

View File

@@ -18,7 +18,6 @@ package com.android.settings.bluetooth.ui.composable
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
@@ -37,6 +36,12 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.semantics.clearAndSetSemantics
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.role
import androidx.compose.ui.semantics.selected
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@@ -46,24 +51,20 @@ import com.android.settings.bluetooth.ui.model.DeviceSettingPreferenceModel
@Composable @Composable
fun MultiTogglePreference(pref: DeviceSettingPreferenceModel.MultiTogglePreference) { fun MultiTogglePreference(pref: DeviceSettingPreferenceModel.MultiTogglePreference) {
Column(modifier = Modifier.padding(24.dp)) { Column(modifier = Modifier.padding(24.dp).fillMaxWidth()) {
Row( Row(
modifier = Modifier.fillMaxWidth().height(56.dp), modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceEvenly, horizontalArrangement = Arrangement.SpaceEvenly,
) { ) {
Box {
Row {
for ((idx, toggle) in pref.toggles.withIndex()) { for ((idx, toggle) in pref.toggles.withIndex()) {
val selected = idx == pref.selectedIndex val selected = idx == pref.selectedIndex
Column( Column(
modifier = Modifier.weight(1f) modifier =
Modifier.weight(1f)
.padding(start = if (idx == 0) 0.dp else 1.dp) .padding(start = if (idx == 0) 0.dp else 1.dp)
.height(56.dp) .height(56.dp)
.background( .background(Color.Transparent, shape = RoundedCornerShape(12.dp)),
Color.Transparent,
shape = RoundedCornerShape(12.dp),
),
verticalArrangement = Arrangement.Center, verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
) { ) {
@@ -71,22 +72,23 @@ fun MultiTogglePreference(pref: DeviceSettingPreferenceModel.MultiTogglePreferen
val endCornerRadius = if (idx == pref.toggles.size - 1) 12.dp else 0.dp val endCornerRadius = if (idx == pref.toggles.size - 1) 12.dp else 0.dp
Button( Button(
onClick = { pref.onSelectedChange(idx) }, onClick = { pref.onSelectedChange(idx) },
modifier = Modifier.fillMaxSize(), modifier =
Modifier.fillMaxSize().semantics {
this.role = Role.RadioButton
this.selected = selected
this.contentDescription = toggle.label
},
enabled = pref.isAllowedChangingState, enabled = pref.isAllowedChangingState,
colors = getButtonColors(selected), colors = getButtonColors(selected),
shape = RoundedCornerShape( shape =
RoundedCornerShape(
startCornerRadius, startCornerRadius,
endCornerRadius, endCornerRadius,
endCornerRadius, endCornerRadius,
startCornerRadius, startCornerRadius,
) ),
) { ) {
DeviceSettingComposeIcon( DeviceSettingComposeIcon(toggle.icon, modifier = Modifier.size(24.dp))
toggle.icon,
modifier = Modifier.size(24.dp),
)
}
}
} }
} }
} }
@@ -103,7 +105,8 @@ fun MultiTogglePreference(pref: DeviceSettingPreferenceModel.MultiTogglePreferen
fontSize = 12.sp, fontSize = 12.sp,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
overflow = TextOverflow.Visible, overflow = TextOverflow.Visible,
modifier = Modifier.weight(1f).padding(horizontal = 8.dp), modifier =
Modifier.weight(1f).padding(horizontal = 8.dp).clearAndSetSemantics {},
) )
} }
} }
@@ -111,14 +114,15 @@ fun MultiTogglePreference(pref: DeviceSettingPreferenceModel.MultiTogglePreferen
} }
@Composable @Composable
private fun getButtonColors(isActive: Boolean) = if (isActive) { private fun getButtonColors(isActive: Boolean) =
if (isActive) {
ButtonDefaults.buttonColors( ButtonDefaults.buttonColors(
containerColor = MaterialTheme.colorScheme.primary, containerColor = MaterialTheme.colorScheme.primary,
contentColor = MaterialTheme.colorScheme.onPrimary, contentColor = MaterialTheme.colorScheme.onPrimary,
) )
} else { } else {
ButtonDefaults.buttonColors( ButtonDefaults.buttonColors(
containerColor = MaterialTheme.colorScheme.surfaceVariant, containerColor = MaterialTheme.colorScheme.surfaceVariant,
contentColor = MaterialTheme.colorScheme.onPrimaryContainer, contentColor = MaterialTheme.colorScheme.onPrimaryContainer,
) )
} }