Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/SliderPageProvider.kt +63 −74 Original line number Diff line number Diff line Loading @@ -23,32 +23,40 @@ import androidx.compose.material.icons.outlined.MusicNote import androidx.compose.material.icons.outlined.MusicOff import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.tooling.preview.Preview import com.android.settingslib.spa.framework.common.SettingsEntry import com.android.settingslib.spa.framework.common.SettingsEntryBuilder import com.android.settingslib.spa.framework.common.SettingsPageProvider import com.android.settingslib.spa.framework.common.createSettingsPage import com.android.settingslib.spa.framework.compose.navigator import com.android.settingslib.spa.framework.theme.SettingsTheme import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.PreferenceModel import com.android.settingslib.spa.widget.preference.SliderPreference import com.android.settingslib.spa.widget.preference.SliderPreferenceModel import com.android.settingslib.spa.widget.scaffold.RegularScaffold import com.android.settingslib.spa.widget.ui.Category private const val TITLE = "Sample Slider" object SliderPageProvider : SettingsPageProvider { override val name = "Slider" private val owner = createSettingsPage() override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { val entryList = mutableListOf<SettingsEntry>() entryList.add( SettingsEntryBuilder.create("Simple Slider", owner) .setUiLayoutFn { @Composable override fun Page(arguments: Bundle?) { RegularScaffold(TITLE) { Category { SimpleSlider() SliderWithIcon() SliderWithChangeableIcon() SliderWithSteps() } } } @Composable private fun SimpleSlider() { SliderPreference( object : SliderPreferenceModel { override val title = "Simple Slider" Loading @@ -56,39 +64,31 @@ object SliderPageProvider : SettingsPageProvider { } ) } .build() ) entryList.add( SettingsEntryBuilder.create("Slider with icon", owner) .setUiLayoutFn { @Composable private fun SliderWithIcon() { SliderPreference( object : SliderPreferenceModel { override val title = "Slider with icon" override val initValue = 30 override val onValueChangeFinished = { println("onValueChangeFinished") } override val onValueChangeFinished = { println("onValueChangeFinished") } override val iconStart = Icons.Outlined.AccessAlarm } ) } .build() ) entryList.add( SettingsEntryBuilder.create("Slider with changeable icon", owner) .setUiLayoutFn { @Composable private fun SliderWithChangeableIcon() { val initValue = 0 var icon by remember { mutableStateOf(Icons.Outlined.MusicOff) } var sliderPosition by remember { mutableStateOf(initValue) } var sliderPosition by remember { mutableIntStateOf(initValue) } SliderPreference( object : SliderPreferenceModel { override val title = "Slider with changeable icon" override val initValue = initValue override val onValueChange = { it: Int -> sliderPosition = it icon = if (it > 0) Icons.Outlined.MusicNote else Icons.Outlined.MusicOff icon = if (it > 0) Icons.Outlined.MusicNote else Icons.Outlined.MusicOff } override val onValueChangeFinished = { println("onValueChangeFinished: the value is $sliderPosition") Loading @@ -97,11 +97,9 @@ object SliderPageProvider : SettingsPageProvider { } ) } .build() ) entryList.add( SettingsEntryBuilder.create("Slider with steps", owner) .setUiLayoutFn { @Composable private fun SliderWithSteps() { SliderPreference( object : SliderPreferenceModel { override val title = "Slider with steps" Loading @@ -111,11 +109,6 @@ object SliderPageProvider : SettingsPageProvider { } ) } .build() ) return entryList } @Composable fun Entry() { Loading @@ -126,13 +119,9 @@ object SliderPageProvider : SettingsPageProvider { } ) } override fun getTitle(arguments: Bundle?): String { return TITLE } } @Preview(showBackground = true) @Preview @Composable private fun SliderPagePreview() { SettingsTheme { SliderPageProvider.Page(null) } Loading Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/SliderPageProvider.kt +63 −74 Original line number Diff line number Diff line Loading @@ -23,32 +23,40 @@ import androidx.compose.material.icons.outlined.MusicNote import androidx.compose.material.icons.outlined.MusicOff import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.tooling.preview.Preview import com.android.settingslib.spa.framework.common.SettingsEntry import com.android.settingslib.spa.framework.common.SettingsEntryBuilder import com.android.settingslib.spa.framework.common.SettingsPageProvider import com.android.settingslib.spa.framework.common.createSettingsPage import com.android.settingslib.spa.framework.compose.navigator import com.android.settingslib.spa.framework.theme.SettingsTheme import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.PreferenceModel import com.android.settingslib.spa.widget.preference.SliderPreference import com.android.settingslib.spa.widget.preference.SliderPreferenceModel import com.android.settingslib.spa.widget.scaffold.RegularScaffold import com.android.settingslib.spa.widget.ui.Category private const val TITLE = "Sample Slider" object SliderPageProvider : SettingsPageProvider { override val name = "Slider" private val owner = createSettingsPage() override fun buildEntry(arguments: Bundle?): List<SettingsEntry> { val entryList = mutableListOf<SettingsEntry>() entryList.add( SettingsEntryBuilder.create("Simple Slider", owner) .setUiLayoutFn { @Composable override fun Page(arguments: Bundle?) { RegularScaffold(TITLE) { Category { SimpleSlider() SliderWithIcon() SliderWithChangeableIcon() SliderWithSteps() } } } @Composable private fun SimpleSlider() { SliderPreference( object : SliderPreferenceModel { override val title = "Simple Slider" Loading @@ -56,39 +64,31 @@ object SliderPageProvider : SettingsPageProvider { } ) } .build() ) entryList.add( SettingsEntryBuilder.create("Slider with icon", owner) .setUiLayoutFn { @Composable private fun SliderWithIcon() { SliderPreference( object : SliderPreferenceModel { override val title = "Slider with icon" override val initValue = 30 override val onValueChangeFinished = { println("onValueChangeFinished") } override val onValueChangeFinished = { println("onValueChangeFinished") } override val iconStart = Icons.Outlined.AccessAlarm } ) } .build() ) entryList.add( SettingsEntryBuilder.create("Slider with changeable icon", owner) .setUiLayoutFn { @Composable private fun SliderWithChangeableIcon() { val initValue = 0 var icon by remember { mutableStateOf(Icons.Outlined.MusicOff) } var sliderPosition by remember { mutableStateOf(initValue) } var sliderPosition by remember { mutableIntStateOf(initValue) } SliderPreference( object : SliderPreferenceModel { override val title = "Slider with changeable icon" override val initValue = initValue override val onValueChange = { it: Int -> sliderPosition = it icon = if (it > 0) Icons.Outlined.MusicNote else Icons.Outlined.MusicOff icon = if (it > 0) Icons.Outlined.MusicNote else Icons.Outlined.MusicOff } override val onValueChangeFinished = { println("onValueChangeFinished: the value is $sliderPosition") Loading @@ -97,11 +97,9 @@ object SliderPageProvider : SettingsPageProvider { } ) } .build() ) entryList.add( SettingsEntryBuilder.create("Slider with steps", owner) .setUiLayoutFn { @Composable private fun SliderWithSteps() { SliderPreference( object : SliderPreferenceModel { override val title = "Slider with steps" Loading @@ -111,11 +109,6 @@ object SliderPageProvider : SettingsPageProvider { } ) } .build() ) return entryList } @Composable fun Entry() { Loading @@ -126,13 +119,9 @@ object SliderPageProvider : SettingsPageProvider { } ) } override fun getTitle(arguments: Bundle?): String { return TITLE } } @Preview(showBackground = true) @Preview @Composable private fun SliderPagePreview() { SettingsTheme { SliderPageProvider.Page(null) } Loading