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

Commit ac9f7236 authored by Sherry Zhou's avatar Sherry Zhou Committed by Android (Google) Code Review
Browse files

Merge "Fix AodNotifIcons overlapping with date view in large weather clock" into main

parents b6db54ac feaf673f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -227,6 +227,7 @@
    <item type="id" name="ambient_indication_container" />
    <item type="id" name="status_view_media_container" />
    <item type="id" name="smart_space_barrier_bottom" />
    <item type="id" name="weather_clock_date_and_icons_barrier_bottom" />

    <!-- Privacy dialog -->
    <item type="id" name="privacy_dialog_close_app_button" />
+6 −0
Original line number Diff line number Diff line
@@ -89,6 +89,12 @@ object KeyguardClockViewBinder {
                        }
                    }
                }
                launch {
                    if (!migrateClocksToBlueprint()) return@launch
                    viewModel.isAodIconsVisible.collect {
                        applyConstraints(clockSection, keyguardRootView, true)
                    }
                }
            }
        }
    }
+0 −1
Original line number Diff line number Diff line
@@ -57,7 +57,6 @@ constructor(
    private var nicBindingDisposable: DisposableHandle? = null
    private val nicId = R.id.aod_notification_icon_container
    private lateinit var nic: NotificationIconContainer
    private val smartSpaceBarrier = View.generateViewId()

    override fun addViews(constraintLayout: ConstraintLayout) {
        if (!KeyguardShadeMigrationNssl.isEnabled) {
+34 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.keyguard.ui.view.layout.sections

import android.content.Context
import android.view.View
import androidx.constraintlayout.widget.Barrier
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
import androidx.constraintlayout.widget.ConstraintSet.BOTTOM
@@ -35,6 +36,7 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
import com.android.systemui.keyguard.shared.model.KeyguardSection
import com.android.systemui.keyguard.ui.binder.KeyguardClockViewBinder
import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
import com.android.systemui.keyguard.ui.viewmodel.KeyguardSmartspaceViewModel
import com.android.systemui.plugins.clocks.ClockController
import com.android.systemui.plugins.clocks.ClockFaceLayout
import com.android.systemui.res.R
@@ -61,6 +63,7 @@ constructor(
    protected val keyguardClockViewModel: KeyguardClockViewModel,
    private val context: Context,
    private val splitShadeStateController: SplitShadeStateController,
    val smartspaceViewModel: KeyguardSmartspaceViewModel,
    val blueprintInteractor: Lazy<KeyguardBlueprintInteractor>,
) : KeyguardSection() {
    override fun addViews(constraintLayout: ConstraintLayout) {}
@@ -117,6 +120,35 @@ constructor(

    private fun getLargeClockFace(clock: ClockController): ClockFaceLayout = clock.largeClock.layout
    private fun getSmallClockFace(clock: ClockController): ClockFaceLayout = clock.smallClock.layout

    fun constrainWeatherClockDateIconsBarrier(constraints: ConstraintSet) {
        constraints.apply {
            if (keyguardClockViewModel.isAodIconsVisible.value) {
                createBarrier(
                    R.id.weather_clock_date_and_icons_barrier_bottom,
                    Barrier.BOTTOM,
                    0,
                    *intArrayOf(sharedR.id.bc_smartspace_view, R.id.aod_notification_icon_container)
                )
            } else {
                if (smartspaceViewModel.bcSmartspaceVisibility.value == VISIBLE) {
                    createBarrier(
                        R.id.weather_clock_date_and_icons_barrier_bottom,
                        Barrier.BOTTOM,
                        0,
                        (sharedR.id.bc_smartspace_view)
                    )
                } else {
                    createBarrier(
                        R.id.weather_clock_date_and_icons_barrier_bottom,
                        Barrier.BOTTOM,
                        getDimen(ENHANCED_SMARTSPACE_HEIGHT),
                        (R.id.lockscreen_clock_view)
                    )
                }
            }
        }
    }
    open fun applyDefaultConstraints(constraints: ConstraintSet) {
        val guideline =
            if (keyguardClockViewModel.clockShouldBeCentered.value) PARENT_ID
@@ -173,6 +205,8 @@ constructor(
            }
            connect(R.id.lockscreen_clock_view, TOP, PARENT_ID, TOP, smallClockTopMargin)
        }

        constrainWeatherClockDateIconsBarrier(constraints)
    }

    private fun getDimen(name: String): Int {
+9 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.keyguard.shared.model.SettingsClockSize
import com.android.systemui.plugins.clocks.ClockController
import com.android.systemui.res.R
import com.android.systemui.statusbar.notification.domain.interactor.NotificationsKeyguardInteractor
import com.android.systemui.statusbar.policy.SplitShadeStateController
import com.android.systemui.util.Utils
import javax.inject.Inject
@@ -44,6 +45,7 @@ constructor(
    private val keyguardClockInteractor: KeyguardClockInteractor,
    @Application private val applicationScope: CoroutineScope,
    private val splitShadeStateController: SplitShadeStateController,
    notifsKeyguardInteractor: NotificationsKeyguardInteractor,
) {
    var burnInLayer: Layer? = null
    val useLargeClock: Boolean
@@ -91,6 +93,13 @@ constructor(
            initialValue = false
        )

    val isAodIconsVisible: StateFlow<Boolean> =
        notifsKeyguardInteractor.areNotificationsFullyHidden.stateIn(
            scope = applicationScope,
            started = SharingStarted.WhileSubscribed(),
            initialValue = false
        )

    // Needs to use a non application context to get display cutout.
    fun getSmallClockTopMargin(context: Context) =
        if (splitShadeStateController.shouldUseSplitNotificationShade(context.resources)) {
Loading