Loading packages/SystemUI/src/com/android/systemui/communal/ui/view/layout/blueprints/DefaultCommunalBlueprint.kt +4 −7 Original line number Diff line number Diff line Loading @@ -16,10 +16,10 @@ package com.android.systemui.communal.ui.view.layout.blueprints import androidx.constraintlayout.widget.ConstraintSet import com.android.systemui.communal.ui.view.layout.sections.DefaultCommunalWidgetSection import com.android.systemui.dagger.SysUISingleton import com.android.systemui.keyguard.data.repository.KeyguardBlueprint import com.android.systemui.keyguard.shared.model.KeyguardBlueprint import com.android.systemui.keyguard.shared.model.KeyguardSection import javax.inject.Inject /** Blueprint for communal mode. */ Loading @@ -28,13 +28,10 @@ import javax.inject.Inject class DefaultCommunalBlueprint @Inject constructor( private val defaultCommunalWidgetSection: DefaultCommunalWidgetSection, defaultCommunalWidgetSection: DefaultCommunalWidgetSection, ) : KeyguardBlueprint { override val id: String = COMMUNAL override fun apply(constraintSet: ConstraintSet) { defaultCommunalWidgetSection.apply(constraintSet) } override val sections: Array<KeyguardSection> = arrayOf(defaultCommunalWidgetSection) companion object { const val COMMUNAL = "communal" Loading packages/SystemUI/src/com/android/systemui/communal/ui/view/layout/sections/DefaultCommunalWidgetSection.kt +32 −3 Original line number Diff line number Diff line Loading @@ -17,18 +17,47 @@ package com.android.systemui.communal.ui.view.layout.sections import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet import androidx.constraintlayout.widget.ConstraintSet.BOTTOM import androidx.constraintlayout.widget.ConstraintSet.END import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID import com.android.systemui.R import com.android.systemui.keyguard.data.repository.KeyguardSection import com.android.systemui.communal.ui.adapter.CommunalWidgetViewAdapter import com.android.systemui.communal.ui.binder.CommunalWidgetViewBinder import com.android.systemui.communal.ui.viewmodel.CommunalWidgetViewModel import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags import com.android.systemui.keyguard.domain.interactor.KeyguardBlueprintInteractor import com.android.systemui.keyguard.shared.model.KeyguardSection import com.android.systemui.keyguard.ui.view.KeyguardRootView import dagger.Lazy import javax.inject.Inject class DefaultCommunalWidgetSection @Inject constructor() : KeyguardSection { class DefaultCommunalWidgetSection @Inject constructor( private val featureFlags: FeatureFlags, private val keyguardRootView: KeyguardRootView, private val communalWidgetViewModel: CommunalWidgetViewModel, private val communalWidgetViewAdapter: CommunalWidgetViewAdapter, private val keyguardBlueprintInteractor: Lazy<KeyguardBlueprintInteractor>, ) : KeyguardSection { private val widgetAreaViewId = R.id.communal_widget_wrapper override fun addViews(constraintLayout: ConstraintLayout) { if (!featureFlags.isEnabled(Flags.WIDGET_ON_KEYGUARD)) { return } CommunalWidgetViewBinder.bind( keyguardRootView, communalWidgetViewModel, communalWidgetViewAdapter, keyguardBlueprintInteractor.get(), ) } override fun apply(constraintSet: ConstraintSet) { override fun applyConstraints(constraintSet: ConstraintSet) { constraintSet.apply { constrainWidth(widgetAreaViewId, WRAP_CONTENT) constrainHeight(widgetAreaViewId, WRAP_CONTENT) Loading packages/SystemUI/src/com/android/systemui/flags/Flags.kt +4 −0 Original line number Diff line number Diff line Loading @@ -204,6 +204,10 @@ object Flags { @JvmField val LOCK_SCREEN_LONG_PRESS_ENABLED = releasedFlag("lock_screen_long_press_enabled") /** Inflate and bind views upon emitting a blueprint value . */ // TODO(b/297365780): Tracking Bug @JvmField val LAZY_INFLATE_KEYGUARD = unreleasedFlag("lazy_inflate_keyguard") /** Enables UI updates for AI wallpapers in the wallpaper picker. */ // TODO(b/267722622): Tracking Bug @JvmField val WALLPAPER_PICKER_UI_FOR_AIWP = releasedFlag("wallpaper_picker_ui_for_aiwp") Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt +18 −15 Original line number Diff line number Diff line Loading @@ -124,10 +124,12 @@ constructor( return field } private set override fun start() { if (featureFlags.isEnabled(Flags.LAZY_INFLATE_KEYGUARD)) { keyguardRootView.removeAllViews() initializeViews() } else { bindKeyguardRootView() val notificationPanel = notificationShadeWindowView.requireViewById(R.id.notification_panel) as ViewGroup Loading @@ -141,6 +143,7 @@ constructor( bindAmbientIndicationArea() bindSettingsPopupMenu() bindCommunalWidgetArea() } KeyguardBlueprintViewBinder.bind(keyguardRootView, keyguardBlueprintViewModel) keyguardBlueprintCommandListener.start() Loading packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepository.kt +1 −27 Original line number Diff line number Diff line Loading @@ -17,13 +17,10 @@ package com.android.systemui.keyguard.data.repository import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet import androidx.core.view.children import com.android.systemui.common.ui.data.repository.ConfigurationRepository import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.keyguard.shared.model.KeyguardBlueprint import com.android.systemui.keyguard.ui.view.layout.blueprints.DefaultKeyguardBlueprint.Companion.DEFAULT import com.android.systemui.keyguard.ui.view.layout.blueprints.KeyguardBlueprintModule import java.io.PrintWriter Loading Loading @@ -95,26 +92,3 @@ constructor( blueprintIdMap.forEach { entry -> pw.println("${entry.key}") } } } /** Determines the constraints for the ConstraintSet in the lockscreen root view. */ interface KeyguardBlueprint { val id: String val shouldRemoveUnconstrainedViews: Boolean get() = true fun apply(constraintLayout: ConstraintSet) fun removeUnConstrainedViews(constraintLayout: ConstraintLayout, constraintSet: ConstraintSet) { constraintLayout.children .map { it.id } .filterNot { constraintSet.knownIds.contains(it) } .forEach { constraintSet.setVisibility(it, View.GONE) } } } /** * Lower level modules that determine constraints for a particular section in the lockscreen root * view. */ interface KeyguardSection { fun apply(constraintSet: ConstraintSet) } Loading
packages/SystemUI/src/com/android/systemui/communal/ui/view/layout/blueprints/DefaultCommunalBlueprint.kt +4 −7 Original line number Diff line number Diff line Loading @@ -16,10 +16,10 @@ package com.android.systemui.communal.ui.view.layout.blueprints import androidx.constraintlayout.widget.ConstraintSet import com.android.systemui.communal.ui.view.layout.sections.DefaultCommunalWidgetSection import com.android.systemui.dagger.SysUISingleton import com.android.systemui.keyguard.data.repository.KeyguardBlueprint import com.android.systemui.keyguard.shared.model.KeyguardBlueprint import com.android.systemui.keyguard.shared.model.KeyguardSection import javax.inject.Inject /** Blueprint for communal mode. */ Loading @@ -28,13 +28,10 @@ import javax.inject.Inject class DefaultCommunalBlueprint @Inject constructor( private val defaultCommunalWidgetSection: DefaultCommunalWidgetSection, defaultCommunalWidgetSection: DefaultCommunalWidgetSection, ) : KeyguardBlueprint { override val id: String = COMMUNAL override fun apply(constraintSet: ConstraintSet) { defaultCommunalWidgetSection.apply(constraintSet) } override val sections: Array<KeyguardSection> = arrayOf(defaultCommunalWidgetSection) companion object { const val COMMUNAL = "communal" Loading
packages/SystemUI/src/com/android/systemui/communal/ui/view/layout/sections/DefaultCommunalWidgetSection.kt +32 −3 Original line number Diff line number Diff line Loading @@ -17,18 +17,47 @@ package com.android.systemui.communal.ui.view.layout.sections import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet import androidx.constraintlayout.widget.ConstraintSet.BOTTOM import androidx.constraintlayout.widget.ConstraintSet.END import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID import com.android.systemui.R import com.android.systemui.keyguard.data.repository.KeyguardSection import com.android.systemui.communal.ui.adapter.CommunalWidgetViewAdapter import com.android.systemui.communal.ui.binder.CommunalWidgetViewBinder import com.android.systemui.communal.ui.viewmodel.CommunalWidgetViewModel import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags import com.android.systemui.keyguard.domain.interactor.KeyguardBlueprintInteractor import com.android.systemui.keyguard.shared.model.KeyguardSection import com.android.systemui.keyguard.ui.view.KeyguardRootView import dagger.Lazy import javax.inject.Inject class DefaultCommunalWidgetSection @Inject constructor() : KeyguardSection { class DefaultCommunalWidgetSection @Inject constructor( private val featureFlags: FeatureFlags, private val keyguardRootView: KeyguardRootView, private val communalWidgetViewModel: CommunalWidgetViewModel, private val communalWidgetViewAdapter: CommunalWidgetViewAdapter, private val keyguardBlueprintInteractor: Lazy<KeyguardBlueprintInteractor>, ) : KeyguardSection { private val widgetAreaViewId = R.id.communal_widget_wrapper override fun addViews(constraintLayout: ConstraintLayout) { if (!featureFlags.isEnabled(Flags.WIDGET_ON_KEYGUARD)) { return } CommunalWidgetViewBinder.bind( keyguardRootView, communalWidgetViewModel, communalWidgetViewAdapter, keyguardBlueprintInteractor.get(), ) } override fun apply(constraintSet: ConstraintSet) { override fun applyConstraints(constraintSet: ConstraintSet) { constraintSet.apply { constrainWidth(widgetAreaViewId, WRAP_CONTENT) constrainHeight(widgetAreaViewId, WRAP_CONTENT) Loading
packages/SystemUI/src/com/android/systemui/flags/Flags.kt +4 −0 Original line number Diff line number Diff line Loading @@ -204,6 +204,10 @@ object Flags { @JvmField val LOCK_SCREEN_LONG_PRESS_ENABLED = releasedFlag("lock_screen_long_press_enabled") /** Inflate and bind views upon emitting a blueprint value . */ // TODO(b/297365780): Tracking Bug @JvmField val LAZY_INFLATE_KEYGUARD = unreleasedFlag("lazy_inflate_keyguard") /** Enables UI updates for AI wallpapers in the wallpaper picker. */ // TODO(b/267722622): Tracking Bug @JvmField val WALLPAPER_PICKER_UI_FOR_AIWP = releasedFlag("wallpaper_picker_ui_for_aiwp") Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt +18 −15 Original line number Diff line number Diff line Loading @@ -124,10 +124,12 @@ constructor( return field } private set override fun start() { if (featureFlags.isEnabled(Flags.LAZY_INFLATE_KEYGUARD)) { keyguardRootView.removeAllViews() initializeViews() } else { bindKeyguardRootView() val notificationPanel = notificationShadeWindowView.requireViewById(R.id.notification_panel) as ViewGroup Loading @@ -141,6 +143,7 @@ constructor( bindAmbientIndicationArea() bindSettingsPopupMenu() bindCommunalWidgetArea() } KeyguardBlueprintViewBinder.bind(keyguardRootView, keyguardBlueprintViewModel) keyguardBlueprintCommandListener.start() Loading
packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepository.kt +1 −27 Original line number Diff line number Diff line Loading @@ -17,13 +17,10 @@ package com.android.systemui.keyguard.data.repository import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet import androidx.core.view.children import com.android.systemui.common.ui.data.repository.ConfigurationRepository import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.keyguard.shared.model.KeyguardBlueprint import com.android.systemui.keyguard.ui.view.layout.blueprints.DefaultKeyguardBlueprint.Companion.DEFAULT import com.android.systemui.keyguard.ui.view.layout.blueprints.KeyguardBlueprintModule import java.io.PrintWriter Loading Loading @@ -95,26 +92,3 @@ constructor( blueprintIdMap.forEach { entry -> pw.println("${entry.key}") } } } /** Determines the constraints for the ConstraintSet in the lockscreen root view. */ interface KeyguardBlueprint { val id: String val shouldRemoveUnconstrainedViews: Boolean get() = true fun apply(constraintLayout: ConstraintSet) fun removeUnConstrainedViews(constraintLayout: ConstraintLayout, constraintSet: ConstraintSet) { constraintLayout.children .map { it.id } .filterNot { constraintSet.knownIds.contains(it) } .forEach { constraintSet.setVisibility(it, View.GONE) } } } /** * Lower level modules that determine constraints for a particular section in the lockscreen root * view. */ interface KeyguardSection { fun apply(constraintSet: ConstraintSet) }