Loading packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt +13 −3 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ constructor( AodPromotedNotificationArea( modifier = Modifier.fillMaxWidth(0.5f) .align(alignment = Alignment.TopStart) .align(alignment = Alignment.TopEnd) ) Notifications( areNotificationsVisible = areNotificationsVisible, Loading @@ -129,6 +129,10 @@ constructor( } } // Not a mistake; reusing below_clock_padding_start_icons as AOD RON top // padding for now. val aodPromotedNotifTopPadding: Dp = dimensionResource(R.dimen.below_clock_padding_start_icons) val aodIconPadding: Dp = dimensionResource(R.dimen.below_clock_padding_start_icons) Loading @@ -136,7 +140,10 @@ constructor( if (!isShadeLayoutWide && !isBypassEnabled) { Box(modifier = Modifier.weight(weight = 1f)) { Column(Modifier.align(alignment = Alignment.TopStart)) { AodPromotedNotificationArea() AodPromotedNotificationArea( modifier = Modifier.padding(top = aodPromotedNotifTopPadding) ) AodNotificationIcons( modifier = Modifier.padding(start = aodIconPadding) ) Loading @@ -150,7 +157,10 @@ constructor( } else { Column { if (!isShadeLayoutWide) { AodPromotedNotificationArea() AodPromotedNotificationArea( modifier = Modifier.padding(top = aodPromotedNotifTopPadding) ) } AodNotificationIcons( modifier = Loading packages/SystemUI/res/values/ids.xml +1 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,7 @@ <item type="id" name="nssl_placeholder" /> <item type="id" name="nssl_placeholder_barrier_bottom" /> <item type="id" name="small_clock_guideline_top" /> <item type="id" name="smart_space_barrier_top" /> <item type="id" name="smart_space_barrier_bottom" /> <item type="id" name="split_shade_guideline" /> <item type="id" name="start_button" /> Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodNotificationIconsSection.kt +16 −18 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardSection import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel import com.android.systemui.res.R import com.android.systemui.shade.ShadeDisplayAware import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.statusbar.notification.icon.ui.viewbinder.AlwaysOnDisplayNotificationIconViewStore import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerViewBinder import com.android.systemui.statusbar.notification.icon.ui.viewbinder.StatusBarIconViewBindingFailureTracker Loading @@ -55,6 +56,7 @@ constructor( private val nicAodIconViewStore: AlwaysOnDisplayNotificationIconViewStore, private val systemBarUtilsState: SystemBarUtilsState, private val rootViewModel: KeyguardRootViewModel, private val shadeInteractor: ShadeInteractor, ) : KeyguardSection() { private var nicBindingDisposable: DisposableHandle? = null Loading Loading @@ -93,34 +95,30 @@ constructor( override fun applyConstraints(constraintSet: ConstraintSet) { val bottomMargin = context.resources.getDimensionPixelSize(R.dimen.keyguard_status_view_bottom_margin) val horizontalMargin = context.resources.getDimensionPixelSize(customR.dimen.status_view_margin_horizontal) val height = context.resources.getDimensionPixelSize(R.dimen.notification_shelf_height) val isVisible = rootViewModel.isNotifIconContainerVisible.value val isShadeLayoutWide = shadeInteractor.isShadeLayoutWide.value constraintSet.apply { if (PromotedNotificationUiAod.isEnabled) { connect(nicId, TOP, AodPromotedNotificationSection.viewId, BOTTOM, bottomMargin) } else { connect(nicId, TOP, R.id.smart_space_barrier_bottom, BOTTOM, bottomMargin) } setGoneMargin(nicId, BOTTOM, bottomMargin) setVisibility(nicId, if (isVisible.value) VISIBLE else GONE) connect( nicId, START, PARENT_ID, START, context.resources.getDimensionPixelSize(customR.dimen.status_view_margin_horizontal), ) connect( nicId, END, PARENT_ID, END, context.resources.getDimensionPixelSize(customR.dimen.status_view_margin_horizontal), ) constrainHeight( nicId, context.resources.getDimensionPixelSize(R.dimen.notification_shelf_height), ) if (PromotedNotificationUiAod.isEnabled && isShadeLayoutWide) { // Don't create a start constraint, so the icons can hopefully right-align. } else { connect(nicId, START, PARENT_ID, START, horizontalMargin) } connect(nicId, END, PARENT_ID, END, horizontalMargin) constrainHeight(nicId, height) } } Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodPromotedNotificationSection.kt +24 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.keyguard.ui.view.layout.sections import android.content.Context import androidx.compose.ui.platform.ComposeView import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet Loading @@ -26,6 +27,7 @@ import androidx.constraintlayout.widget.ConstraintSet.START import androidx.constraintlayout.widget.ConstraintSet.TOP import com.android.systemui.keyguard.shared.model.KeyguardSection import com.android.systemui.res.R import com.android.systemui.shade.ShadeDisplayAware import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.statusbar.notification.promoted.AODPromotedNotification import com.android.systemui.statusbar.notification.promoted.PromotedNotificationLogger Loading @@ -36,6 +38,7 @@ import javax.inject.Inject class AodPromotedNotificationSection @Inject constructor( @ShadeDisplayAware private val context: Context, private val viewModelFactory: AODPromotedNotificationViewModel.Factory, private val shadeInteractor: ShadeInteractor, private val logger: PromotedNotificationLogger, Loading Loading @@ -83,13 +86,30 @@ constructor( // view may have been created by a different instance of the section (!), and we don't // actually *need* it to set constraints, so don't check for it here. val topPadding = context.resources.getDimensionPixelSize(R.dimen.below_clock_padding_start_icons) constraintSet.apply { val isShadeLayoutWide = shadeInteractor.isShadeLayoutWide.value val endGuidelineId = if (isShadeLayoutWide) R.id.split_shade_guideline else PARENT_ID connect(viewId, TOP, R.id.smart_space_barrier_bottom, BOTTOM, 0) if (isShadeLayoutWide) { // When in split shade, align with top of smart space: connect(viewId, TOP, R.id.smart_space_barrier_top, TOP, 0) // and occupy the right half of the screen: connect(viewId, START, R.id.split_shade_guideline, START, 0) connect(viewId, END, PARENT_ID, END, 0) // TODO(b/369151941): Calculate proper right padding here (when in split shade, it's // bigger than what the Composable applies!) } else { // When not in split shade, place below smart space: connect(viewId, TOP, R.id.smart_space_barrier_bottom, BOTTOM, topPadding) // and occupy the full width of the screen: connect(viewId, START, PARENT_ID, START, 0) connect(viewId, END, endGuidelineId, END, 0) connect(viewId, END, PARENT_ID, END, 0) } constrainWidth(viewId, ConstraintSet.MATCH_CONSTRAINT) constrainHeight(viewId, ConstraintSet.WRAP_CONTENT) Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt +7 −0 Original line number Diff line number Diff line Loading @@ -167,6 +167,13 @@ constructor( ) } createBarrier( R.id.smart_space_barrier_top, Barrier.TOP, 0, *intArrayOf(sharedR.id.bc_smartspace_view, sharedR.id.date_smartspace_view), ) createBarrier( R.id.smart_space_barrier_bottom, Barrier.BOTTOM, Loading Loading
packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt +13 −3 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ constructor( AodPromotedNotificationArea( modifier = Modifier.fillMaxWidth(0.5f) .align(alignment = Alignment.TopStart) .align(alignment = Alignment.TopEnd) ) Notifications( areNotificationsVisible = areNotificationsVisible, Loading @@ -129,6 +129,10 @@ constructor( } } // Not a mistake; reusing below_clock_padding_start_icons as AOD RON top // padding for now. val aodPromotedNotifTopPadding: Dp = dimensionResource(R.dimen.below_clock_padding_start_icons) val aodIconPadding: Dp = dimensionResource(R.dimen.below_clock_padding_start_icons) Loading @@ -136,7 +140,10 @@ constructor( if (!isShadeLayoutWide && !isBypassEnabled) { Box(modifier = Modifier.weight(weight = 1f)) { Column(Modifier.align(alignment = Alignment.TopStart)) { AodPromotedNotificationArea() AodPromotedNotificationArea( modifier = Modifier.padding(top = aodPromotedNotifTopPadding) ) AodNotificationIcons( modifier = Modifier.padding(start = aodIconPadding) ) Loading @@ -150,7 +157,10 @@ constructor( } else { Column { if (!isShadeLayoutWide) { AodPromotedNotificationArea() AodPromotedNotificationArea( modifier = Modifier.padding(top = aodPromotedNotifTopPadding) ) } AodNotificationIcons( modifier = Loading
packages/SystemUI/res/values/ids.xml +1 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,7 @@ <item type="id" name="nssl_placeholder" /> <item type="id" name="nssl_placeholder_barrier_bottom" /> <item type="id" name="small_clock_guideline_top" /> <item type="id" name="smart_space_barrier_top" /> <item type="id" name="smart_space_barrier_bottom" /> <item type="id" name="split_shade_guideline" /> <item type="id" name="start_button" /> Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodNotificationIconsSection.kt +16 −18 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardSection import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel import com.android.systemui.res.R import com.android.systemui.shade.ShadeDisplayAware import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.statusbar.notification.icon.ui.viewbinder.AlwaysOnDisplayNotificationIconViewStore import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerViewBinder import com.android.systemui.statusbar.notification.icon.ui.viewbinder.StatusBarIconViewBindingFailureTracker Loading @@ -55,6 +56,7 @@ constructor( private val nicAodIconViewStore: AlwaysOnDisplayNotificationIconViewStore, private val systemBarUtilsState: SystemBarUtilsState, private val rootViewModel: KeyguardRootViewModel, private val shadeInteractor: ShadeInteractor, ) : KeyguardSection() { private var nicBindingDisposable: DisposableHandle? = null Loading Loading @@ -93,34 +95,30 @@ constructor( override fun applyConstraints(constraintSet: ConstraintSet) { val bottomMargin = context.resources.getDimensionPixelSize(R.dimen.keyguard_status_view_bottom_margin) val horizontalMargin = context.resources.getDimensionPixelSize(customR.dimen.status_view_margin_horizontal) val height = context.resources.getDimensionPixelSize(R.dimen.notification_shelf_height) val isVisible = rootViewModel.isNotifIconContainerVisible.value val isShadeLayoutWide = shadeInteractor.isShadeLayoutWide.value constraintSet.apply { if (PromotedNotificationUiAod.isEnabled) { connect(nicId, TOP, AodPromotedNotificationSection.viewId, BOTTOM, bottomMargin) } else { connect(nicId, TOP, R.id.smart_space_barrier_bottom, BOTTOM, bottomMargin) } setGoneMargin(nicId, BOTTOM, bottomMargin) setVisibility(nicId, if (isVisible.value) VISIBLE else GONE) connect( nicId, START, PARENT_ID, START, context.resources.getDimensionPixelSize(customR.dimen.status_view_margin_horizontal), ) connect( nicId, END, PARENT_ID, END, context.resources.getDimensionPixelSize(customR.dimen.status_view_margin_horizontal), ) constrainHeight( nicId, context.resources.getDimensionPixelSize(R.dimen.notification_shelf_height), ) if (PromotedNotificationUiAod.isEnabled && isShadeLayoutWide) { // Don't create a start constraint, so the icons can hopefully right-align. } else { connect(nicId, START, PARENT_ID, START, horizontalMargin) } connect(nicId, END, PARENT_ID, END, horizontalMargin) constrainHeight(nicId, height) } } Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodPromotedNotificationSection.kt +24 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.keyguard.ui.view.layout.sections import android.content.Context import androidx.compose.ui.platform.ComposeView import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet Loading @@ -26,6 +27,7 @@ import androidx.constraintlayout.widget.ConstraintSet.START import androidx.constraintlayout.widget.ConstraintSet.TOP import com.android.systemui.keyguard.shared.model.KeyguardSection import com.android.systemui.res.R import com.android.systemui.shade.ShadeDisplayAware import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.statusbar.notification.promoted.AODPromotedNotification import com.android.systemui.statusbar.notification.promoted.PromotedNotificationLogger Loading @@ -36,6 +38,7 @@ import javax.inject.Inject class AodPromotedNotificationSection @Inject constructor( @ShadeDisplayAware private val context: Context, private val viewModelFactory: AODPromotedNotificationViewModel.Factory, private val shadeInteractor: ShadeInteractor, private val logger: PromotedNotificationLogger, Loading Loading @@ -83,13 +86,30 @@ constructor( // view may have been created by a different instance of the section (!), and we don't // actually *need* it to set constraints, so don't check for it here. val topPadding = context.resources.getDimensionPixelSize(R.dimen.below_clock_padding_start_icons) constraintSet.apply { val isShadeLayoutWide = shadeInteractor.isShadeLayoutWide.value val endGuidelineId = if (isShadeLayoutWide) R.id.split_shade_guideline else PARENT_ID connect(viewId, TOP, R.id.smart_space_barrier_bottom, BOTTOM, 0) if (isShadeLayoutWide) { // When in split shade, align with top of smart space: connect(viewId, TOP, R.id.smart_space_barrier_top, TOP, 0) // and occupy the right half of the screen: connect(viewId, START, R.id.split_shade_guideline, START, 0) connect(viewId, END, PARENT_ID, END, 0) // TODO(b/369151941): Calculate proper right padding here (when in split shade, it's // bigger than what the Composable applies!) } else { // When not in split shade, place below smart space: connect(viewId, TOP, R.id.smart_space_barrier_bottom, BOTTOM, topPadding) // and occupy the full width of the screen: connect(viewId, START, PARENT_ID, START, 0) connect(viewId, END, endGuidelineId, END, 0) connect(viewId, END, PARENT_ID, END, 0) } constrainWidth(viewId, ConstraintSet.MATCH_CONSTRAINT) constrainHeight(viewId, ConstraintSet.WRAP_CONTENT) Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt +7 −0 Original line number Diff line number Diff line Loading @@ -167,6 +167,13 @@ constructor( ) } createBarrier( R.id.smart_space_barrier_top, Barrier.TOP, 0, *intArrayOf(sharedR.id.bc_smartspace_view, sharedR.id.date_smartspace_view), ) createBarrier( R.id.smart_space_barrier_bottom, Barrier.BOTTOM, Loading