Loading packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettings.kt +22 −15 Original line number Diff line number Diff line Loading @@ -18,21 +18,21 @@ package com.android.systemui.qs.ui.composable import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.layout.layout import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.AndroidView import com.android.compose.animation.scene.ElementKey import com.android.compose.animation.scene.MovableElementScenePicker import com.android.compose.animation.scene.SceneScope import com.android.compose.animation.scene.TransitionState import com.android.compose.modifiers.thenIf import com.android.compose.theme.colorAttr import com.android.systemui.qs.ui.adapter.QSSceneAdapter import com.android.systemui.qs.ui.adapter.QSSceneAdapter.State.Companion.Collapsing Loading @@ -44,9 +44,16 @@ import com.android.systemui.scene.ui.composable.QuickSettings as QuickSettingsSc import com.android.systemui.scene.ui.composable.Shade object QuickSettings { private val SCENES = setOf( QuickSettingsSceneKey, Shade, ) object Elements { // TODO RENAME val Content = ElementKey("QuickSettingsContent") val Content = ElementKey("QuickSettingsContent", scenePicker = MovableElementScenePicker(SCENES)) val CollapsedGrid = ElementKey("QuickSettingsCollapsedGrid") val FooterActions = ElementKey("QuickSettingsFooterActions") } Loading Loading @@ -86,14 +93,22 @@ private fun SceneScope.stateForQuickSettingsContent(): QSSceneAdapter.State { */ @Composable fun SceneScope.QuickSettings( modifier: Modifier = Modifier, qsSceneAdapter: QSSceneAdapter, heightProvider: () -> Int, modifier: Modifier = Modifier, ) { val contentState = stateForQuickSettingsContent() MovableElement( key = QuickSettings.Elements.Content, modifier = modifier.fillMaxWidth().defaultMinSize(minHeight = 300.dp) modifier = modifier.fillMaxWidth().layout { measurable, constraints -> val placeable = measurable.measure(constraints) // Use the height of the correct view based on the scene it is being composed in val height = heightProvider() layout(placeable.width, height) { placeable.placeRelative(0, 0) } } ) { content { QuickSettingsContent(qsSceneAdapter = qsSceneAdapter, contentState) } } Loading @@ -118,15 +133,7 @@ private fun QuickSettingsContent( qsView?.let { view -> Box( modifier = modifier .fillMaxWidth() .then( if (isCustomizing) { Modifier.fillMaxHeight() } else { Modifier.wrapContentHeight() } ) modifier.fillMaxWidth().thenIf(isCustomizing) { Modifier.fillMaxHeight() } ) { AndroidView( modifier = Modifier.fillMaxWidth().background(colorAttr(R.attr.underSurface)), Loading packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt +2 −1 Original line number Diff line number Diff line Loading @@ -213,8 +213,9 @@ private fun SceneScope.QuickSettingsScene( Spacer(modifier = Modifier.height(16.dp)) // This view has its own horizontal padding QuickSettings( modifier = Modifier.sysuiResTag("expanded_qs_scroll_view"), viewModel.qsSceneAdapter, { viewModel.qsSceneAdapter.qsHeight }, modifier = Modifier.sysuiResTag("expanded_qs_scroll_view"), ) } } Loading packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt +1 −1 Original line number Diff line number Diff line Loading @@ -189,8 +189,8 @@ private fun SceneScope.ShadeScene( ) ) QuickSettings( modifier = Modifier.height(130.dp), viewModel.qsSceneAdapter, { viewModel.qsSceneAdapter.qqsHeight }, ) if (viewModel.isMediaVisible()) { Loading packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModelTest.kt +1 −1 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ class QuickSettingsSceneViewModelTest : SysuiTestCase() { private val sceneInteractor by lazy { kosmos.sceneInteractor } private val mobileIconsInteractor = FakeMobileIconsInteractor(FakeMobileMappingsProxy(), mock()) private val flags = FakeFeatureFlagsClassic().also { it.set(Flags.NEW_NETWORK_SLICE_UI, false) } private val qsFlexiglassAdapter = FakeQSSceneAdapter { mock() } private val qsFlexiglassAdapter = FakeQSSceneAdapter({ mock() }) private val footerActionsViewModel = mock<FooterActionsViewModel>() private val footerActionsViewModelFactory = mock<FooterActionsViewModel.Factory> { Loading packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt +1 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ class ShadeSceneViewModelTest : SysuiTestCase() { scope = testScope.backgroundScope, ) private val qsFlexiglassAdapter = FakeQSSceneAdapter { mock() } private val qsFlexiglassAdapter = FakeQSSceneAdapter({ mock() }) private lateinit var shadeHeaderViewModel: ShadeHeaderViewModel Loading Loading
packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettings.kt +22 −15 Original line number Diff line number Diff line Loading @@ -18,21 +18,21 @@ package com.android.systemui.qs.ui.composable import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.layout.layout import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.AndroidView import com.android.compose.animation.scene.ElementKey import com.android.compose.animation.scene.MovableElementScenePicker import com.android.compose.animation.scene.SceneScope import com.android.compose.animation.scene.TransitionState import com.android.compose.modifiers.thenIf import com.android.compose.theme.colorAttr import com.android.systemui.qs.ui.adapter.QSSceneAdapter import com.android.systemui.qs.ui.adapter.QSSceneAdapter.State.Companion.Collapsing Loading @@ -44,9 +44,16 @@ import com.android.systemui.scene.ui.composable.QuickSettings as QuickSettingsSc import com.android.systemui.scene.ui.composable.Shade object QuickSettings { private val SCENES = setOf( QuickSettingsSceneKey, Shade, ) object Elements { // TODO RENAME val Content = ElementKey("QuickSettingsContent") val Content = ElementKey("QuickSettingsContent", scenePicker = MovableElementScenePicker(SCENES)) val CollapsedGrid = ElementKey("QuickSettingsCollapsedGrid") val FooterActions = ElementKey("QuickSettingsFooterActions") } Loading Loading @@ -86,14 +93,22 @@ private fun SceneScope.stateForQuickSettingsContent(): QSSceneAdapter.State { */ @Composable fun SceneScope.QuickSettings( modifier: Modifier = Modifier, qsSceneAdapter: QSSceneAdapter, heightProvider: () -> Int, modifier: Modifier = Modifier, ) { val contentState = stateForQuickSettingsContent() MovableElement( key = QuickSettings.Elements.Content, modifier = modifier.fillMaxWidth().defaultMinSize(minHeight = 300.dp) modifier = modifier.fillMaxWidth().layout { measurable, constraints -> val placeable = measurable.measure(constraints) // Use the height of the correct view based on the scene it is being composed in val height = heightProvider() layout(placeable.width, height) { placeable.placeRelative(0, 0) } } ) { content { QuickSettingsContent(qsSceneAdapter = qsSceneAdapter, contentState) } } Loading @@ -118,15 +133,7 @@ private fun QuickSettingsContent( qsView?.let { view -> Box( modifier = modifier .fillMaxWidth() .then( if (isCustomizing) { Modifier.fillMaxHeight() } else { Modifier.wrapContentHeight() } ) modifier.fillMaxWidth().thenIf(isCustomizing) { Modifier.fillMaxHeight() } ) { AndroidView( modifier = Modifier.fillMaxWidth().background(colorAttr(R.attr.underSurface)), Loading
packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt +2 −1 Original line number Diff line number Diff line Loading @@ -213,8 +213,9 @@ private fun SceneScope.QuickSettingsScene( Spacer(modifier = Modifier.height(16.dp)) // This view has its own horizontal padding QuickSettings( modifier = Modifier.sysuiResTag("expanded_qs_scroll_view"), viewModel.qsSceneAdapter, { viewModel.qsSceneAdapter.qsHeight }, modifier = Modifier.sysuiResTag("expanded_qs_scroll_view"), ) } } Loading
packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt +1 −1 Original line number Diff line number Diff line Loading @@ -189,8 +189,8 @@ private fun SceneScope.ShadeScene( ) ) QuickSettings( modifier = Modifier.height(130.dp), viewModel.qsSceneAdapter, { viewModel.qsSceneAdapter.qqsHeight }, ) if (viewModel.isMediaVisible()) { Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModelTest.kt +1 −1 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ class QuickSettingsSceneViewModelTest : SysuiTestCase() { private val sceneInteractor by lazy { kosmos.sceneInteractor } private val mobileIconsInteractor = FakeMobileIconsInteractor(FakeMobileMappingsProxy(), mock()) private val flags = FakeFeatureFlagsClassic().also { it.set(Flags.NEW_NETWORK_SLICE_UI, false) } private val qsFlexiglassAdapter = FakeQSSceneAdapter { mock() } private val qsFlexiglassAdapter = FakeQSSceneAdapter({ mock() }) private val footerActionsViewModel = mock<FooterActionsViewModel>() private val footerActionsViewModelFactory = mock<FooterActionsViewModel.Factory> { Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt +1 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ class ShadeSceneViewModelTest : SysuiTestCase() { scope = testScope.backgroundScope, ) private val qsFlexiglassAdapter = FakeQSSceneAdapter { mock() } private val qsFlexiglassAdapter = FakeQSSceneAdapter({ mock() }) private lateinit var shadeHeaderViewModel: ShadeHeaderViewModel Loading