Snap for 12705048 from ca4e842d23 to 25Q1-release

Change-Id: I4fd0a39c51faac21d463c371e308b1d41907a0bc
This commit is contained in:
Android Build Coastguard Worker
2024-11-24 22:16:50 +00:00
2 changed files with 61 additions and 50 deletions

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,47 +51,44 @@ 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 { for ((idx, toggle) in pref.toggles.withIndex()) {
Row { val selected = idx == pref.selectedIndex
for ((idx, toggle) in pref.toggles.withIndex()) { Column(
val selected = idx == pref.selectedIndex modifier =
Column( 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(Color.Transparent, shape = RoundedCornerShape(12.dp)),
.background( verticalArrangement = Arrangement.Center,
Color.Transparent, horizontalAlignment = Alignment.CenterHorizontally,
shape = RoundedCornerShape(12.dp), ) {
), val startCornerRadius = if (idx == 0) 12.dp else 0.dp
verticalArrangement = Arrangement.Center, val endCornerRadius = if (idx == pref.toggles.size - 1) 12.dp else 0.dp
horizontalAlignment = Alignment.CenterHorizontally, Button(
) { onClick = { pref.onSelectedChange(idx) },
val startCornerRadius = if (idx == 0) 12.dp else 0.dp modifier =
val endCornerRadius = if (idx == pref.toggles.size - 1) 12.dp else 0.dp Modifier.fillMaxSize().semantics {
Button( this.role = Role.RadioButton
onClick = { pref.onSelectedChange(idx) }, this.selected = selected
modifier = Modifier.fillMaxSize(), this.contentDescription = toggle.label
enabled = pref.isAllowedChangingState, },
colors = getButtonColors(selected), enabled = pref.isAllowedChangingState,
shape = RoundedCornerShape( colors = getButtonColors(selected),
startCornerRadius, shape =
endCornerRadius, RoundedCornerShape(
endCornerRadius, startCornerRadius,
startCornerRadius, endCornerRadius,
) endCornerRadius,
) { startCornerRadius,
DeviceSettingComposeIcon( ),
toggle.icon, ) {
modifier = Modifier.size(24.dp), DeviceSettingComposeIcon(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) =
ButtonDefaults.buttonColors( if (isActive) {
containerColor = MaterialTheme.colorScheme.primary, ButtonDefaults.buttonColors(
contentColor = MaterialTheme.colorScheme.onPrimary, containerColor = MaterialTheme.colorScheme.primary,
) contentColor = MaterialTheme.colorScheme.onPrimary,
} else { )
ButtonDefaults.buttonColors( } else {
containerColor = MaterialTheme.colorScheme.surfaceVariant, ButtonDefaults.buttonColors(
contentColor = MaterialTheme.colorScheme.onPrimaryContainer, containerColor = MaterialTheme.colorScheme.surfaceVariant,
) contentColor = MaterialTheme.colorScheme.onPrimaryContainer,
} )
}

View File

@@ -25,6 +25,7 @@ import com.android.settingslib.datastore.KeyedObservableDelegate
import com.android.settingslib.datastore.SettingsSecureStore import com.android.settingslib.datastore.SettingsSecureStore
import com.android.settingslib.datastore.SettingsStore import com.android.settingslib.datastore.SettingsStore
import com.android.settingslib.metadata.MainSwitchPreference import com.android.settingslib.metadata.MainSwitchPreference
import com.android.settingslib.metadata.ReadWritePermit
// LINT.IfChange // LINT.IfChange
class AdaptiveConnectivityTogglePreference : class AdaptiveConnectivityTogglePreference :
@@ -33,6 +34,12 @@ class AdaptiveConnectivityTogglePreference :
override fun storage(context: Context): KeyValueStore = override fun storage(context: Context): KeyValueStore =
AdaptiveConnectivityToggleStorage(context, SettingsSecureStore.get(context)) AdaptiveConnectivityToggleStorage(context, SettingsSecureStore.get(context))
override fun getReadPermit(context: Context, myUid: Int, callingUid: Int) =
ReadWritePermit.ALLOW
override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
ReadWritePermit.ALLOW
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
private class AdaptiveConnectivityToggleStorage( private class AdaptiveConnectivityToggleStorage(
private val context: Context, private val context: Context,