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

Commit b0046c1b authored by Brad Hinegardner's avatar Brad Hinegardner Committed by Automerger Merge Worker
Browse files

Merge "Change the long-press behavior on custom shortcuts to utilize an actual...

Merge "Change the long-press behavior on custom shortcuts to utilize an actual long-press" into udc-dev am: d6cc0131

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23418597



Change-Id: I097086af4476e09f360714ea475dbedddb05e744
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents fef9f18b d6cc0131
Loading
Loading
Loading
Loading
+46 −8
Original line number Diff line number Diff line
@@ -406,19 +406,21 @@ object KeyguardBottomAreaViewBinder {
        view.isClickable = viewModel.isClickable
        if (viewModel.isClickable) {
            if (viewModel.useLongPress) {
                view.setOnTouchListener(
                    KeyguardQuickAffordanceOnTouchListener(
                val onTouchListener = KeyguardQuickAffordanceOnTouchListener(
                    view,
                    viewModel,
                    messageDisplayer,
                    vibratorHelper,
                    falsingManager,
                )
                )
                view.setOnTouchListener(onTouchListener)
                view.onLongClickListener =
                    OnLongClickListener(falsingManager, viewModel, vibratorHelper, onTouchListener)
            } else {
                view.setOnClickListener(OnClickListener(viewModel, checkNotNull(falsingManager)))
            }
        } else {
            view.onLongClickListener = null
            view.setOnClickListener(null)
            view.setOnTouchListener(null)
        }
@@ -454,6 +456,42 @@ object KeyguardBottomAreaViewBinder {
            .start()
    }

    private class OnLongClickListener(
        private val falsingManager: FalsingManager?,
        private val viewModel: KeyguardQuickAffordanceViewModel,
        private val vibratorHelper: VibratorHelper?,
        private val onTouchListener: KeyguardQuickAffordanceOnTouchListener
    ) : View.OnLongClickListener {
        override fun onLongClick(view: View): Boolean {
            if (falsingManager?.isFalseLongTap(FalsingManager.MODERATE_PENALTY) == true) {
                return true
            }

            if (viewModel.configKey != null) {
                viewModel.onClicked(
                    KeyguardQuickAffordanceViewModel.OnClickedParameters(
                        configKey = viewModel.configKey,
                        expandable = Expandable.fromView(view),
                        slotId = viewModel.slotId,
                    )
                )
                vibratorHelper?.vibrate(
                    if (viewModel.isActivated) {
                        KeyguardBottomAreaVibrations.Activated
                    } else {
                        KeyguardBottomAreaVibrations.Deactivated
                    }
                )
            }

            onTouchListener.cancel()
            return true
        }

        override fun onLongClickUseDefaultHapticFeedback(view: View?) = false

    }

    private class OnClickListener(
        private val viewModel: KeyguardQuickAffordanceViewModel,
        private val falsingManager: FalsingManager,
+6 −17
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ class KeyguardQuickAffordanceOnTouchListener(
    @SuppressLint("ClickableViewAccessibility")
    override fun onTouch(v: View, event: MotionEvent): Boolean {
        return when (event.actionMasked) {
            MotionEvent.ACTION_DOWN ->
            MotionEvent.ACTION_DOWN -> {
                if (viewModel.configKey != null) {
                    downDisplayCoords.set(event.rawX, event.rawY)
                    if (isUsingAccurateTool(event)) {
@@ -62,19 +62,8 @@ class KeyguardQuickAffordanceOnTouchListener(
                                .scaleX(PRESSED_SCALE)
                                .scaleY(PRESSED_SCALE)
                                .setDuration(longPressDurationMs)
                                .withEndAction {
                                    if (
                                        falsingManager?.isFalseLongTap(
                                            FalsingManager.MODERATE_PENALTY
                                        ) == false
                                    ) {
                                        dispatchClick(viewModel.configKey)
                                    }
                                    cancel()
                    }
                }
                    true
                } else {
                false
            }
            MotionEvent.ACTION_MOVE -> {
@@ -91,7 +80,7 @@ class KeyguardQuickAffordanceOnTouchListener(
                        cancel()
                    }
                }
                true
                false
            }
            MotionEvent.ACTION_UP -> {
                if (isUsingAccurateTool(event)) {
@@ -146,7 +135,7 @@ class KeyguardQuickAffordanceOnTouchListener(
                            }
                    )
                }
                true
                false
            }
            MotionEvent.ACTION_CANCEL -> {
                cancel()
@@ -179,7 +168,7 @@ class KeyguardQuickAffordanceOnTouchListener(
        view.setOnClickListener(null)
    }

    private fun cancel(onAnimationEnd: Runnable? = null) {
    fun cancel(onAnimationEnd: Runnable? = null) {
        longPressAnimator?.cancel()
        longPressAnimator = null
        view.animate().scaleX(1f).scaleY(1f).withEndAction(onAnimationEnd)