diff options
5 files changed, 51 insertions, 40 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultNotificationStackScrollLayoutSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultNotificationStackScrollLayoutSection.kt index d75a72f91061..75132a59eb88 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultNotificationStackScrollLayoutSection.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultNotificationStackScrollLayoutSection.kt @@ -24,11 +24,13 @@ import androidx.constraintlayout.widget.ConstraintSet.END import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID import androidx.constraintlayout.widget.ConstraintSet.START import androidx.constraintlayout.widget.ConstraintSet.TOP +import com.android.systemui.Flags.centralizedStatusBarDimensRefactor import com.android.systemui.Flags.migrateClocksToBlueprint import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl import com.android.systemui.res.R import com.android.systemui.scene.shared.flag.SceneContainerFlags +import com.android.systemui.shade.LargeScreenHeaderHelper import com.android.systemui.shade.NotificationPanelView import com.android.systemui.statusbar.notification.stack.AmbientState import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController @@ -36,6 +38,7 @@ import com.android.systemui.statusbar.notification.stack.NotificationStackSizeCa import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationStackAppearanceViewModel import com.android.systemui.statusbar.notification.stack.ui.viewmodel.SharedNotificationContainerViewModel +import dagger.Lazy import javax.inject.Inject import kotlinx.coroutines.CoroutineDispatcher @@ -52,6 +55,7 @@ constructor( ambientState: AmbientState, controller: NotificationStackScrollLayoutController, notificationStackSizeCalculator: NotificationStackSizeCalculator, + private val largeScreenHeaderHelperLazy: Lazy<LargeScreenHeaderHelper>, @Main mainDispatcher: CoroutineDispatcher, ) : NotificationStackScrollLayoutSection( @@ -74,12 +78,27 @@ constructor( val bottomMargin = context.resources.getDimensionPixelSize(R.dimen.keyguard_status_view_bottom_margin) if (migrateClocksToBlueprint()) { + val useLargeScreenHeader = + context.resources.getBoolean(R.bool.config_use_large_screen_shade_header) + val marginTopLargeScreen = + if (centralizedStatusBarDimensRefactor()) { + largeScreenHeaderHelperLazy.get().getLargeScreenHeaderHeight() + } else { + context.resources.getDimensionPixelSize( + R.dimen.large_screen_shade_header_height + ) + } connect( R.id.nssl_placeholder, TOP, R.id.smart_space_barrier_bottom, BOTTOM, - bottomMargin + bottomMargin + + if (useLargeScreenHeader) { + marginTopLargeScreen + } else { + 0 + } ) } else { connect(R.id.nssl_placeholder, TOP, R.id.keyguard_status_view, BOTTOM, bottomMargin) diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SplitShadeNotificationStackScrollLayoutSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SplitShadeNotificationStackScrollLayoutSection.kt index 756a4cca69d0..3e35ae4b2dc3 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SplitShadeNotificationStackScrollLayoutSection.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SplitShadeNotificationStackScrollLayoutSection.kt @@ -23,13 +23,11 @@ import androidx.constraintlayout.widget.ConstraintSet.END import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID import androidx.constraintlayout.widget.ConstraintSet.START import androidx.constraintlayout.widget.ConstraintSet.TOP -import com.android.systemui.Flags.centralizedStatusBarDimensRefactor import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl import com.android.systemui.keyguard.ui.viewmodel.KeyguardSmartspaceViewModel import com.android.systemui.res.R import com.android.systemui.scene.shared.flag.SceneContainerFlags -import com.android.systemui.shade.LargeScreenHeaderHelper import com.android.systemui.shade.NotificationPanelView import com.android.systemui.statusbar.notification.stack.AmbientState import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController @@ -37,7 +35,6 @@ import com.android.systemui.statusbar.notification.stack.NotificationStackSizeCa import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationStackAppearanceViewModel import com.android.systemui.statusbar.notification.stack.ui.viewmodel.SharedNotificationContainerViewModel -import dagger.Lazy import javax.inject.Inject import kotlinx.coroutines.CoroutineDispatcher @@ -56,7 +53,6 @@ constructor( notificationStackSizeCalculator: NotificationStackSizeCalculator, private val smartspaceViewModel: KeyguardSmartspaceViewModel, @Main mainDispatcher: CoroutineDispatcher, - private val largeScreenHeaderHelperLazy: Lazy<LargeScreenHeaderHelper>, ) : NotificationStackScrollLayoutSection( context, @@ -75,16 +71,13 @@ constructor( return } constraintSet.apply { - val splitShadeTopMargin = - if (centralizedStatusBarDimensRefactor()) { - largeScreenHeaderHelperLazy.get().getLargeScreenHeaderHeight() - } else { - context.resources.getDimensionPixelSize( - R.dimen.large_screen_shade_header_height - ) - } - connect(R.id.nssl_placeholder, TOP, PARENT_ID, TOP, splitShadeTopMargin) - + connect( + R.id.nssl_placeholder, + TOP, + PARENT_ID, + TOP, + context.resources.getDimensionPixelSize(R.dimen.keyguard_split_shade_top_margin) + ) connect(R.id.nssl_placeholder, START, PARENT_ID, START) connect(R.id.nssl_placeholder, END, PARENT_ID, END) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/view/SharedNotificationContainer.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/view/SharedNotificationContainer.kt index b4f578fec910..ffab9ea00b35 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/view/SharedNotificationContainer.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/view/SharedNotificationContainer.kt @@ -76,14 +76,10 @@ class SharedNotificationContainer( } val nsslId = R.id.notification_stack_scroller constraintSet.apply { - connect(nsslId, START, startConstraintId, START) - connect(nsslId, END, PARENT_ID, END) - connect(nsslId, BOTTOM, PARENT_ID, BOTTOM) - connect(nsslId, TOP, PARENT_ID, TOP) - setMargin(nsslId, START, marginStart) - setMargin(nsslId, END, marginEnd) - setMargin(nsslId, TOP, marginTop) - setMargin(nsslId, BOTTOM, marginBottom) + connect(nsslId, START, startConstraintId, START, marginStart) + connect(nsslId, END, PARENT_ID, END, marginEnd) + connect(nsslId, BOTTOM, PARENT_ID, BOTTOM, marginBottom) + connect(nsslId, TOP, PARENT_ID, TOP, marginTop) } constraintSet.applyTo(this) } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt index 811da51b55ce..e0c2c3bd91e2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt @@ -151,21 +151,20 @@ constructor( val configurationBasedDimensions: Flow<ConfigurationBasedDimensions> = interactor.configurationBasedDimensions .map { + val marginTop = + if (it.useLargeScreenHeader) it.marginTopLargeScreen else it.marginTop ConfigurationBasedDimensions( marginStart = if (it.useSplitShade) 0 else it.marginHorizontal, marginEnd = it.marginHorizontal, marginBottom = it.marginBottom, - marginTop = - if (it.useLargeScreenHeader) it.marginTopLargeScreen else it.marginTop, + marginTop = marginTop, useSplitShade = it.useSplitShade, paddingTop = if (it.useSplitShade) { - // When in split shade, the margin is applied twice as the legacy shade - // code uses it to calculate padding. - it.keyguardSplitShadeTopMargin - 2 * it.marginTopLargeScreen + marginTop } else { 0 - } + }, ) } .distinctUntilChanged() @@ -255,13 +254,15 @@ constructor( isOnLockscreenWithoutShade, keyguardInteractor.notificationContainerBounds, configurationBasedDimensions, - interactor.topPosition.sampleCombine( - keyguardTransitionInteractor.isInTransitionToAnyState, - shadeInteractor.qsExpansion, - ), + interactor.topPosition + .sampleCombine( + keyguardTransitionInteractor.isInTransitionToAnyState, + shadeInteractor.qsExpansion, + ) + .onStart { emit(Triple(0f, false, 0f)) } ) { onLockscreen, bounds, config, (top, isInTransitionToAnyState, qsExpansion) -> if (onLockscreen) { - bounds.copy(top = bounds.top + config.paddingTop) + bounds.copy(top = bounds.top - config.paddingTop) } else { // When QS expansion > 0, it should directly set the top padding so do not // animate it diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt index ff882b19ab13..9055ba4e1c4e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt @@ -138,7 +138,8 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { configurationRepository.onAnyConfigurationChange() - assertThat(dimens!!.paddingTop).isEqualTo(30) + // Should directly use the header height (flagged off value) + assertThat(dimens!!.paddingTop).isEqualTo(10) } @Test @@ -154,7 +155,8 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { configurationRepository.onAnyConfigurationChange() - assertThat(dimens!!.paddingTop).isEqualTo(40) + // Should directly use the header height (flagged on value) + assertThat(dimens!!.paddingTop).isEqualTo(5) } @Test @@ -456,8 +458,8 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { ) runCurrent() - // Top should be equal to bounds (1) + padding adjustment (30) - assertThat(bounds).isEqualTo(NotificationContainerBounds(top = 31f, bottom = 2f)) + // Top should be equal to bounds (1) - padding adjustment (10) + assertThat(bounds).isEqualTo(NotificationContainerBounds(top = -9f, bottom = 2f)) } @Test @@ -483,8 +485,8 @@ class SharedNotificationContainerViewModelTest : SysuiTestCase() { ) runCurrent() - // Top should be equal to bounds (1) + padding adjustment (40) - assertThat(bounds).isEqualTo(NotificationContainerBounds(top = 41f, bottom = 2f)) + // Top should be equal to bounds (1) - padding adjustment (5) + assertThat(bounds).isEqualTo(NotificationContainerBounds(top = -4f, bottom = 2f)) } @Test |