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

Commit b8855273 authored by Aaron Liu's avatar Aaron Liu Committed by Android (Google) Code Review
Browse files

Merge changes I4af1e28a,Ibcc31e86 into main

* changes:
  Migrate add view logic and bind logic
  Add flag lazy_inflate_keyguard
parents 16f47291 a17840b8
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -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. */
@@ -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"
+32 −3
Original line number Diff line number Diff line
@@ -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)
+4 −0
Original line number Diff line number Diff line
@@ -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")
+18 −15
Original line number Diff line number Diff line
@@ -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
@@ -141,6 +143,7 @@ constructor(
            bindAmbientIndicationArea()
            bindSettingsPopupMenu()
            bindCommunalWidgetArea()
        }

        KeyguardBlueprintViewBinder.bind(keyguardRootView, keyguardBlueprintViewModel)
        keyguardBlueprintCommandListener.start()
+1 −27
Original line number Diff line number Diff line
@@ -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
@@ -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