diff options
| author | 2022-08-26 07:32:13 +0800 | |
|---|---|---|
| committer | 2022-10-25 13:14:46 +0800 | |
| commit | e663986c39f4047f5ad6483e51b3824c16123c3c (patch) | |
| tree | 148a4bc48394ad48c9060525004cd3fc98d31d1a | |
| parent | 94fc6ed47a7b3f5047a8fceaac2795d6051880ba (diff) | |
Upgrade Compose version to 1.3 for SpaLib
- Use Switch instead of Checkbox
- Disable user scroll for Pager so, current scroll behavior is not
supported.
Bug: 235727273
Test: Unit test & Manual with Gallery App
Change-Id: I0a5cbf011432c7c1f4545c249f7f75bb239a47c0
7 files changed, 41 insertions, 35 deletions
diff --git a/packages/SettingsLib/Spa/build.gradle b/packages/SettingsLib/Spa/build.gradle index 68c63dad6726..4fb77d7257ca 100644 --- a/packages/SettingsLib/Spa/build.gradle +++ b/packages/SettingsLib/Spa/build.gradle @@ -18,9 +18,8 @@ buildscript { ext { spa_min_sdk = 21 spa_target_sdk = 33 - jetpack_compose_version = '1.2.0-alpha04' + jetpack_compose_version = '1.3.0' jetpack_compose_compiler_version = '1.3.2' - jetpack_compose_material3_version = '1.0.0-alpha06' } } plugins { diff --git a/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/SettingsPagerPage.kt b/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/SettingsPagerPage.kt index e09ebdad7a1f..b38178b0e6f4 100644 --- a/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/SettingsPagerPage.kt +++ b/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/page/SettingsPagerPage.kt @@ -17,7 +17,10 @@ package com.android.settingslib.spa.gallery.page import android.os.Bundle +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import com.android.settingslib.spa.framework.common.SettingsEntryBuilder import com.android.settingslib.spa.framework.common.SettingsPage @@ -48,9 +51,11 @@ object SettingsPagerPageProvider : SettingsPageProvider { @Composable override fun Page(arguments: Bundle?) { - SettingsScaffold(title = TITLE) { - SettingsPager(listOf("Personal", "Work")) { - PlaceholderTitle("Page $it") + SettingsScaffold(title = TITLE) { paddingValues -> + Box(Modifier.padding(paddingValues)) { + SettingsPager(listOf("Personal", "Work")) { + PlaceholderTitle("Page $it") + } } } } diff --git a/packages/SettingsLib/Spa/spa/build.gradle b/packages/SettingsLib/Spa/spa/build.gradle index 3bafcf27fed9..2820ed7bc96e 100644 --- a/packages/SettingsLib/Spa/spa/build.gradle +++ b/packages/SettingsLib/Spa/spa/build.gradle @@ -55,7 +55,7 @@ android { dependencies { api "androidx.appcompat:appcompat:1.7.0-alpha01" - api "androidx.compose.material3:material3:$jetpack_compose_material3_version" + api "androidx.compose.material3:material3:1.1.0-alpha01" api "androidx.compose.material:material-icons-extended:$jetpack_compose_version" api "androidx.compose.runtime:runtime-livedata:$jetpack_compose_version" api "androidx.compose.ui:ui-tooling-preview:$jetpack_compose_version" diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/Pager.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/Pager.kt index bf338574c42d..4df7794e8759 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/Pager.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/Pager.kt @@ -40,7 +40,6 @@ import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Velocity import androidx.compose.ui.unit.dp -import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.filter @@ -214,6 +213,7 @@ internal fun Pager( horizontalAlignment = horizontalAlignment, reverseLayout = reverseLayout, contentPadding = contentPadding, + userScrollEnabled = false, modifier = modifier, ) { items( @@ -241,6 +241,7 @@ internal fun Pager( horizontalArrangement = Arrangement.spacedBy(itemSpacing, horizontalAlignment), reverseLayout = reverseLayout, contentPadding = contentPadding, + userScrollEnabled = false, modifier = modifier, ) { items( diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SettingsScaffold.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SettingsScaffold.kt index d17e4645ee5e..b50cb3ed84d0 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SettingsScaffold.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SettingsScaffold.kt @@ -21,8 +21,8 @@ import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.padding import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Scaffold -import androidx.compose.material3.SmallTopAppBar import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -43,7 +43,7 @@ fun SettingsScaffold( ) { Scaffold( topBar = { - SmallTopAppBar( + TopAppBar( title = { Text( text = title, @@ -63,7 +63,7 @@ fun SettingsScaffold( @OptIn(ExperimentalMaterial3Api::class) @Composable -internal fun settingsTopAppBarColors() = TopAppBarDefaults.largeTopAppBarColors( +private fun settingsTopAppBarColors() = TopAppBarDefaults.smallTopAppBarColors( containerColor = SettingsTheme.colorScheme.surfaceHeader, scrolledContainerColor = SettingsTheme.colorScheme.surfaceHeader, ) diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/Switch.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/Switch.kt index b9690762845e..9831b918894b 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/Switch.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/Switch.kt @@ -16,30 +16,26 @@ package com.android.settingslib.spa.widget.ui -import androidx.compose.material3.Checkbox -import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Switch import androidx.compose.runtime.Composable import androidx.compose.runtime.State import com.android.settingslib.spa.framework.util.wrapOnSwitchWithLog -@OptIn(ExperimentalMaterial3Api::class) @Composable fun SettingsSwitch( checked: State<Boolean?>, changeable: State<Boolean>, onCheckedChange: ((newChecked: Boolean) -> Unit)? = null, ) { - // TODO: Replace Checkbox with Switch when the androidx.compose.material3_material3 library is - // updated to date. val checkedValue = checked.value if (checkedValue != null) { - Checkbox( + Switch( checked = checkedValue, onCheckedChange = wrapOnSwitchWithLog(onCheckedChange), enabled = changeable.value, ) } else { - Checkbox( + Switch( checked = false, onCheckedChange = null, enabled = false, diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppListPage.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppListPage.kt index 2be1d1c6cce6..0caa8213e163 100644 --- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppListPage.kt +++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppListPage.kt @@ -16,8 +16,8 @@ package com.android.settingslib.spaprivileged.template.app +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material3.DropdownMenuItem @@ -57,23 +57,28 @@ fun <T : AppRecord> AppListPage( ShowSystemAction(showSystem.value) { showSystem.value = it } }, ) { paddingValues -> - Spacer(Modifier.padding(paddingValues)) - WorkProfilePager(primaryUserOnly) { userInfo -> - Column(Modifier.fillMaxSize()) { - val options = remember { listModel.getSpinnerOptions() } - val selectedOption = rememberSaveable { mutableStateOf(0) } - Spinner(options, selectedOption.value) { selectedOption.value = it } - AppList( - appListConfig = AppListConfig( - userId = userInfo.id, - showInstantApps = showInstantApps, - ), - listModel = listModel, - showSystem = showSystem, - option = selectedOption, - searchQuery = stateOf(""), - appItem = appItem, - ) + Box( + Modifier + .padding(paddingValues) + .fillMaxSize() + ) { + WorkProfilePager(primaryUserOnly) { userInfo -> + Column(Modifier.fillMaxSize()) { + val options = remember { listModel.getSpinnerOptions() } + val selectedOption = rememberSaveable { mutableStateOf(0) } + Spinner(options, selectedOption.value) { selectedOption.value = it } + AppList( + appListConfig = AppListConfig( + userId = userInfo.id, + showInstantApps = showInstantApps, + ), + listModel = listModel, + showSystem = showSystem, + option = selectedOption, + searchQuery = stateOf(""), + appItem = appItem, + ) + } } } } |