Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 259454da authored by Julia Tuttle's avatar Julia Tuttle
Browse files

Move AOD RON to right side of split shade

Bug: 369151941
Flag: com.android.systemui.aod_ui_rich_ongoing
Test: manual
Change-Id: I6edc6002ca5248f43919dc684838e7ada10d5d96
parent 360155af
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -113,7 +113,7 @@ constructor(
                                        AodPromotedNotificationArea(
                                            modifier =
                                                Modifier.fillMaxWidth(0.5f)
                                                    .align(alignment = Alignment.TopStart)
                                                    .align(alignment = Alignment.TopEnd)
                                        )
                                        Notifications(
                                            areNotificationsVisible = areNotificationsVisible,
@@ -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)

@@ -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)
                                        )
@@ -150,7 +157,10 @@ constructor(
                            } else {
                                Column {
                                    if (!isShadeLayoutWide) {
                                        AodPromotedNotificationArea()
                                        AodPromotedNotificationArea(
                                            modifier =
                                                Modifier.padding(top = aodPromotedNotifTopPadding)
                                        )
                                    }
                                    AodNotificationIcons(
                                        modifier =
+1 −0
Original line number Diff line number Diff line
@@ -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" />
+16 −18
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -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)
        }
    }

+24 −4
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -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,
@@ -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)
+7 −0
Original line number Diff line number Diff line
@@ -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