Loading packages/SystemUI/res/values/ids.xml +1 −0 Original line number Diff line number Diff line Loading @@ -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" /> Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinder.kt +6 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,12 @@ object KeyguardClockViewBinder { } } } launch { if (!migrateClocksToBlueprint()) return@launch viewModel.isAodIconsVisible.collect { applyConstraints(clockSection, keyguardRootView, true) } } } } } Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodNotificationIconsSection.kt +0 −1 Original line number Diff line number Diff line Loading @@ -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) { Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt +34 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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) {} Loading Loading @@ -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 Loading Loading @@ -173,6 +205,8 @@ constructor( } connect(R.id.lockscreen_clock_view, TOP, PARENT_ID, TOP, smallClockTopMargin) } constrainWeatherClockDateIconsBarrier(constraints) } private fun getDimen(name: String): Int { Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardClockViewModel.kt +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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 Loading
packages/SystemUI/res/values/ids.xml +1 −0 Original line number Diff line number Diff line Loading @@ -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" /> Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinder.kt +6 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,12 @@ object KeyguardClockViewBinder { } } } launch { if (!migrateClocksToBlueprint()) return@launch viewModel.isAodIconsVisible.collect { applyConstraints(clockSection, keyguardRootView, true) } } } } } Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodNotificationIconsSection.kt +0 −1 Original line number Diff line number Diff line Loading @@ -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) { Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt +34 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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) {} Loading Loading @@ -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 Loading Loading @@ -173,6 +205,8 @@ constructor( } connect(R.id.lockscreen_clock_view, TOP, PARENT_ID, TOP, smallClockTopMargin) } constrainWeatherClockDateIconsBarrier(constraints) } private fun getDimen(name: String): Int { Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardClockViewModel.kt +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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