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

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

Merge changes I02646ed9,Iec8e6fa4 into main

* changes:
  Augment blueprint command line tool
  Add parent class for shortcut sections
parents 138b88bf 166271d5
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ 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
import java.util.TreeMap
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
@@ -52,17 +53,32 @@ constructor(
    blueprints: Set<@JvmSuppressWildcards KeyguardBlueprint>,
    @Application private val applicationScope: CoroutineScope,
) {
    private val blueprintIdMap: Map<String, KeyguardBlueprint> = blueprints.associateBy { it.id }
    private val blueprintIdMap: TreeMap<String, KeyguardBlueprint> = TreeMap()
    private val _blueprint: MutableSharedFlow<KeyguardBlueprint> = MutableSharedFlow(replay = 1)
    val blueprint: Flow<KeyguardBlueprint> = _blueprint.asSharedFlow()

    init {
        blueprintIdMap.putAll(blueprints.associateBy { it.id })
        applyBlueprint(blueprintIdMap[DEFAULT]!!)
        applicationScope.launch {
            configurationRepository.onAnyConfigurationChange.collect { refreshBlueprint() }
        }
    }

    /**
     * Emits the blueprint value to the collectors.
     *
     * @param blueprintId
     * @return whether the transition has succeeded.
     */
    fun applyBlueprint(index: Int): Boolean {
        ArrayList(blueprintIdMap.values)[index]?.let {
            applyBlueprint(it)
            return true
        }
        return false
    }

    /**
     * Emits the blueprint value to the collectors.
     *
@@ -89,6 +105,6 @@ constructor(

    /** Prints all available blueprints to the PrintWriter. */
    fun printBlueprints(pw: PrintWriter) {
        blueprintIdMap.forEach { entry -> pw.println("${entry.key}") }
        blueprintIdMap.onEachIndexed { index, entry -> pw.println("$index: ${entry.key}") }
    }
}
+10 −0
Original line number Diff line number Diff line
@@ -37,6 +37,16 @@ constructor(private val keyguardBlueprintRepository: KeyguardBlueprintRepository
        return keyguardBlueprintRepository.applyBlueprint(blueprintId)
    }

    /**
     * Transitions to a blueprint.
     *
     * @param blueprintId
     * @return whether the transition has succeeded.
     */
    fun transitionToBlueprint(blueprintId: Int): Boolean {
        return keyguardBlueprintRepository.applyBlueprint(blueprintId)
    }

    /** Re-emits the blueprint value to the collectors. */
    fun refreshBlueprint() {
        keyguardBlueprintRepository.refreshBlueprint()
+6 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.keyguard.ui.view.layout

import androidx.core.text.isDigitsOnly
import com.android.systemui.keyguard.data.repository.KeyguardBlueprintRepository
import com.android.systemui.keyguard.domain.interactor.KeyguardBlueprintInteractor
import com.android.systemui.statusbar.commandline.Command
@@ -45,7 +46,11 @@ constructor(
                return
            }

            if (keyguardBlueprintInteractor.transitionToBlueprint(arg)) {
            if (
                arg.isDigitsOnly() && keyguardBlueprintInteractor.transitionToBlueprint(arg.toInt())
            ) {
                pw.println("Transition succeeded!")
            } else if (keyguardBlueprintInteractor.transitionToBlueprint(arg)) {
                pw.println("Transition succeeded!")
            } else {
                pw.println("Invalid argument! To see available blueprint ids, run:")
+1 −1
Original line number Diff line number Diff line
@@ -61,6 +61,6 @@ constructor(
        )

    companion object {
        const val SHORTCUTS_BESIDE_UDFPS = "shortcutsBesideUdfps"
        const val SHORTCUTS_BESIDE_UDFPS = "shortcuts-besides-udfps"
    }
}
+1 −72
Original line number Diff line number Diff line
@@ -18,8 +18,6 @@
package com.android.systemui.keyguard.ui.view.layout.sections

import android.content.res.Resources
import android.view.View
import android.widget.ImageView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
import androidx.constraintlayout.widget.ConstraintSet.BOTTOM
@@ -27,13 +25,10 @@ import androidx.constraintlayout.widget.ConstraintSet.LEFT
import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID
import androidx.constraintlayout.widget.ConstraintSet.RIGHT
import androidx.constraintlayout.widget.ConstraintSet.TOP
import androidx.core.content.res.ResourcesCompat
import com.android.systemui.R
import com.android.systemui.animation.view.LaunchableImageView
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.keyguard.shared.model.KeyguardSection
import com.android.systemui.keyguard.ui.binder.KeyguardQuickAffordanceViewBinder
import com.android.systemui.keyguard.ui.viewmodel.KeyguardQuickAffordancesCombinedViewModel
import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel
@@ -53,10 +48,7 @@ constructor(
    private val falsingManager: FalsingManager,
    private val indicationController: KeyguardIndicationController,
    private val vibratorHelper: VibratorHelper,
) : KeyguardSection() {
    private var leftShortcutHandle: KeyguardQuickAffordanceViewBinder.Binding? = null
    private var rightShortcutHandle: KeyguardQuickAffordanceViewBinder.Binding? = null

) : BaseShortcutSection() {
    override fun addViews(constraintLayout: ConstraintLayout) {
        if (featureFlags.isEnabled(Flags.MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA)) {
            addLeftShortcut(constraintLayout)
@@ -109,67 +101,4 @@ constructor(
            connect(R.id.end_button, BOTTOM, R.id.lock_icon_view, BOTTOM)
        }
    }

    override fun removeViews(constraintLayout: ConstraintLayout) {
        leftShortcutHandle?.destroy()
        rightShortcutHandle?.destroy()
        constraintLayout.removeView(R.id.start_button)
        constraintLayout.removeView(R.id.end_button)
    }

    private fun addLeftShortcut(constraintLayout: ConstraintLayout) {
        val padding =
            constraintLayout.resources.getDimensionPixelSize(
                R.dimen.keyguard_affordance_fixed_padding
            )
        val view =
            LaunchableImageView(constraintLayout.context, null).apply {
                id = R.id.start_button
                scaleType = ImageView.ScaleType.FIT_CENTER
                background =
                    ResourcesCompat.getDrawable(
                        context.resources,
                        R.drawable.keyguard_bottom_affordance_bg,
                        context.theme
                    )
                foreground =
                    ResourcesCompat.getDrawable(
                        context.resources,
                        R.drawable.keyguard_bottom_affordance_selected_border,
                        context.theme
                    )
                visibility = View.INVISIBLE
                setPadding(padding, padding, padding, padding)
            }
        constraintLayout.addView(view)
    }

    private fun addRightShortcut(constraintLayout: ConstraintLayout) {
        if (constraintLayout.findViewById<View>(R.id.end_button) != null) return

        val padding =
            constraintLayout.resources.getDimensionPixelSize(
                R.dimen.keyguard_affordance_fixed_padding
            )
        val view =
            LaunchableImageView(constraintLayout.context, null).apply {
                id = R.id.end_button
                scaleType = ImageView.ScaleType.FIT_CENTER
                background =
                    ResourcesCompat.getDrawable(
                        context.resources,
                        R.drawable.keyguard_bottom_affordance_bg,
                        context.theme
                    )
                foreground =
                    ResourcesCompat.getDrawable(
                        context.resources,
                        R.drawable.keyguard_bottom_affordance_selected_border,
                        context.theme
                    )
                visibility = View.INVISIBLE
                setPadding(padding, padding, padding, padding)
            }
        constraintLayout.addView(view)
    }
}
Loading