Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/preference/SwitchPreferencePage.kt +25 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package com.android.settingslib.spa.gallery.preference import android.os.Bundle import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.AirplanemodeActive import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.produceState Loading @@ -34,6 +36,7 @@ import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.PreferenceModel import com.android.settingslib.spa.widget.preference.SwitchPreference import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel import com.android.settingslib.spa.widget.ui.SettingsIcon import kotlinx.coroutines.delay private const val TITLE = "Sample SwitchPreference" Loading Loading @@ -72,6 +75,13 @@ object SwitchPreferencePageProvider : SettingsPageProvider { SampleNotChangeableSwitchPreference() }.build() ) entryList.add( SettingsEntryBuilder.create( "SwitchPreference with icon", owner) .setIsAllowSearch(true) .setUiLayoutFn { SampleSwitchPreferenceWithIcon() }.build() ) return entryList } Loading Loading @@ -148,6 +158,21 @@ private fun SampleNotChangeableSwitchPreference() { }) } @Composable private fun SampleSwitchPreferenceWithIcon() { val checked = rememberSaveable { mutableStateOf(true) } SwitchPreference(remember { object : SwitchPreferenceModel { override val title = "SwitchPreference" override val checked = checked override val onCheckedChange = { newChecked: Boolean -> checked.value = newChecked } override val icon = @Composable { SettingsIcon(imageVector = Icons.Outlined.AirplanemodeActive) } } }) } @Preview(showBackground = true) @Composable private fun SwitchPreferencePagePreview() { Loading packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/preference/SwitchPreference.kt +23 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import androidx.compose.foundation.LocalIndication import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Column import androidx.compose.foundation.selection.toggleable import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.AirplanemodeActive import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.remember Loading @@ -33,6 +35,7 @@ import com.android.settingslib.spa.framework.theme.SettingsDimension import com.android.settingslib.spa.framework.theme.SettingsTheme import com.android.settingslib.spa.framework.util.EntryHighlight import com.android.settingslib.spa.framework.util.wrapOnSwitchWithLog import com.android.settingslib.spa.widget.ui.SettingsIcon import com.android.settingslib.spa.widget.ui.SettingsSwitch /** Loading @@ -50,6 +53,14 @@ interface SwitchPreferenceModel { val summary: State<String> get() = stateOf("") /** * The icon of this [Preference]. * * Default is `null` which means no icon. */ val icon: (@Composable () -> Unit)? get() = null /** * Indicates whether this [SwitchPreference] is checked. * Loading Loading @@ -84,6 +95,7 @@ fun SwitchPreference(model: SwitchPreferenceModel) { InternalSwitchPreference( title = model.title, summary = model.summary, icon = model.icon, checked = model.checked, changeable = model.changeable, onCheckedChange = model.onCheckedChange, Loading @@ -95,6 +107,7 @@ fun SwitchPreference(model: SwitchPreferenceModel) { internal fun InternalSwitchPreference( title: String, summary: State<String> = "".toState(), icon: @Composable (() -> Unit)? = null, checked: State<Boolean?>, changeable: State<Boolean> = true.toState(), paddingStart: Dp = SettingsDimension.itemPaddingStart, Loading Loading @@ -125,6 +138,7 @@ internal fun InternalSwitchPreference( paddingStart = paddingStart, paddingEnd = paddingEnd, paddingVertical = paddingVertical, icon = icon, ) { SettingsSwitch( checked = checked, Loading Loading @@ -152,6 +166,15 @@ private fun SwitchPreferencePreview() { checked = false.toState(), onCheckedChange = {}, ) InternalSwitchPreference( title = "Use Dark theme", summary = "Summary".toState(), checked = true.toState(), onCheckedChange = {}, icon = @Composable { SettingsIcon(imageVector = Icons.Outlined.AirplanemodeActive) }, ) } } } Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/preference/SwitchPreferencePage.kt +25 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package com.android.settingslib.spa.gallery.preference import android.os.Bundle import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.AirplanemodeActive import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.produceState Loading @@ -34,6 +36,7 @@ import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.PreferenceModel import com.android.settingslib.spa.widget.preference.SwitchPreference import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel import com.android.settingslib.spa.widget.ui.SettingsIcon import kotlinx.coroutines.delay private const val TITLE = "Sample SwitchPreference" Loading Loading @@ -72,6 +75,13 @@ object SwitchPreferencePageProvider : SettingsPageProvider { SampleNotChangeableSwitchPreference() }.build() ) entryList.add( SettingsEntryBuilder.create( "SwitchPreference with icon", owner) .setIsAllowSearch(true) .setUiLayoutFn { SampleSwitchPreferenceWithIcon() }.build() ) return entryList } Loading Loading @@ -148,6 +158,21 @@ private fun SampleNotChangeableSwitchPreference() { }) } @Composable private fun SampleSwitchPreferenceWithIcon() { val checked = rememberSaveable { mutableStateOf(true) } SwitchPreference(remember { object : SwitchPreferenceModel { override val title = "SwitchPreference" override val checked = checked override val onCheckedChange = { newChecked: Boolean -> checked.value = newChecked } override val icon = @Composable { SettingsIcon(imageVector = Icons.Outlined.AirplanemodeActive) } } }) } @Preview(showBackground = true) @Composable private fun SwitchPreferencePagePreview() { Loading
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/preference/SwitchPreference.kt +23 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import androidx.compose.foundation.LocalIndication import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Column import androidx.compose.foundation.selection.toggleable import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.AirplanemodeActive import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.remember Loading @@ -33,6 +35,7 @@ import com.android.settingslib.spa.framework.theme.SettingsDimension import com.android.settingslib.spa.framework.theme.SettingsTheme import com.android.settingslib.spa.framework.util.EntryHighlight import com.android.settingslib.spa.framework.util.wrapOnSwitchWithLog import com.android.settingslib.spa.widget.ui.SettingsIcon import com.android.settingslib.spa.widget.ui.SettingsSwitch /** Loading @@ -50,6 +53,14 @@ interface SwitchPreferenceModel { val summary: State<String> get() = stateOf("") /** * The icon of this [Preference]. * * Default is `null` which means no icon. */ val icon: (@Composable () -> Unit)? get() = null /** * Indicates whether this [SwitchPreference] is checked. * Loading Loading @@ -84,6 +95,7 @@ fun SwitchPreference(model: SwitchPreferenceModel) { InternalSwitchPreference( title = model.title, summary = model.summary, icon = model.icon, checked = model.checked, changeable = model.changeable, onCheckedChange = model.onCheckedChange, Loading @@ -95,6 +107,7 @@ fun SwitchPreference(model: SwitchPreferenceModel) { internal fun InternalSwitchPreference( title: String, summary: State<String> = "".toState(), icon: @Composable (() -> Unit)? = null, checked: State<Boolean?>, changeable: State<Boolean> = true.toState(), paddingStart: Dp = SettingsDimension.itemPaddingStart, Loading Loading @@ -125,6 +138,7 @@ internal fun InternalSwitchPreference( paddingStart = paddingStart, paddingEnd = paddingEnd, paddingVertical = paddingVertical, icon = icon, ) { SettingsSwitch( checked = checked, Loading Loading @@ -152,6 +166,15 @@ private fun SwitchPreferencePreview() { checked = false.toState(), onCheckedChange = {}, ) InternalSwitchPreference( title = "Use Dark theme", summary = "Summary".toState(), checked = true.toState(), onCheckedChange = {}, icon = @Composable { SettingsIcon(imageVector = Icons.Outlined.AirplanemodeActive) }, ) } } }