diff options
5 files changed, 33 insertions, 7 deletions
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 6bfd0887c404..2ba72e386cd1 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -635,9 +635,13 @@          58.0001 29.2229,56.9551 26.8945,55.195      </string> -    <!-- The time (in ms) needed to trigger the lock icon view's long-press affordance --> +    <!-- The time (in ms) needed to trigger the device entry icon view's long-press affordance -->      <integer name="config_lockIconLongPress" translatable="false">200</integer> +    <!-- The time (in ms) needed to trigger the device entry icon view's long-press affordance +         when the device supports an under-display fingerprint sensor --> +    <integer name="config_udfpsDeviceEntryIconLongPress" translatable="false">100</integer> +      <!-- package name of a built-in camera app to use to restrict implicit intent resolution           when the double-press power gesture is used. Ignored if empty. -->      <string translatable="false" name="config_cameraGesturePackage"></string> diff --git a/packages/SystemUI/src/com/android/systemui/common/ui/view/LongPressHandlingView.kt b/packages/SystemUI/src/com/android/systemui/common/ui/view/LongPressHandlingView.kt index 07814512b4b8..85e2bdb43ba5 100644 --- a/packages/SystemUI/src/com/android/systemui/common/ui/view/LongPressHandlingView.kt +++ b/packages/SystemUI/src/com/android/systemui/common/ui/view/LongPressHandlingView.kt @@ -37,7 +37,7 @@ import kotlinx.coroutines.DisposableHandle  class LongPressHandlingView(      context: Context,      attrs: AttributeSet?, -    private val longPressDuration: () -> Long, +    longPressDuration: () -> Long,  ) :      View(          context, @@ -89,6 +89,12 @@ class LongPressHandlingView(          )      } +    var longPressDuration: () -> Long +        get() = interactionHandler.longPressDuration +        set(longPressDuration) { +            interactionHandler.longPressDuration = longPressDuration +        } +      fun setLongPressHandlingEnabled(isEnabled: Boolean) {          interactionHandler.isLongPressHandlingEnabled = isEnabled      } diff --git a/packages/SystemUI/src/com/android/systemui/common/ui/view/LongPressHandlingViewInteractionHandler.kt b/packages/SystemUI/src/com/android/systemui/common/ui/view/LongPressHandlingViewInteractionHandler.kt index a742e8d614b1..d3fc610bc52e 100644 --- a/packages/SystemUI/src/com/android/systemui/common/ui/view/LongPressHandlingViewInteractionHandler.kt +++ b/packages/SystemUI/src/com/android/systemui/common/ui/view/LongPressHandlingViewInteractionHandler.kt @@ -34,7 +34,7 @@ class LongPressHandlingViewInteractionHandler(      /** Callback reporting the a single tap gesture was detected at the given coordinates. */      private val onSingleTapDetected: () -> Unit,      /** Time for the touch to be considered a long-press in ms */ -    private val longPressDuration: () -> Long, +    var longPressDuration: () -> Long,  ) {      sealed class MotionEventModel {          object Other : MotionEventModel() diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/DeviceEntryIconViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/DeviceEntryIconViewBinder.kt index db47bfbd4cd4..4f00495819e8 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/DeviceEntryIconViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/DeviceEntryIconViewBinder.kt @@ -34,6 +34,7 @@ import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryForegroundViewModel  import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryIconViewModel  import com.android.systemui.lifecycle.repeatWhenAttached  import com.android.systemui.plugins.FalsingManager +import com.android.systemui.res.R  import com.android.systemui.statusbar.VibratorHelper  import kotlinx.coroutines.CoroutineScope  import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -94,6 +95,24 @@ object DeviceEntryIconViewBinder {                          longPressHandlingView.setLongPressHandlingEnabled(isEnabled)                      }                  } +                launch("$TAG#viewModel.isUdfpsSupported") { +                    viewModel.isUdfpsSupported.collect { udfpsSupported -> +                        longPressHandlingView.longPressDuration = +                            if (udfpsSupported) { +                                { +                                    view.resources +                                        .getInteger(R.integer.config_udfpsDeviceEntryIconLongPress) +                                        .toLong() +                                } +                            } else { +                                { +                                    view.resources +                                        .getInteger(R.integer.config_lockIconLongPress) +                                        .toLong() +                                } +                            } +                    } +                }                  launch("$TAG#viewModel.accessibilityDelegateHint") {                      viewModel.accessibilityDelegateHint.collect { hint ->                          view.accessibilityHintType = hint diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/DeviceEntryIconView.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/DeviceEntryIconView.kt index 5713a158fde4..35b259849b78 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/DeviceEntryIconView.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/DeviceEntryIconView.kt @@ -40,10 +40,7 @@ constructor(      attrs: AttributeSet?,      defStyleAttrs: Int = 0,  ) : FrameLayout(context, attrs, defStyleAttrs) { -    val longPressHandlingView: LongPressHandlingView = -        LongPressHandlingView(context, attrs) { -            context.resources.getInteger(R.integer.config_lockIconLongPress).toLong() -        } +    val longPressHandlingView: LongPressHandlingView = LongPressHandlingView(context, attrs)      val iconView: ImageView = ImageView(context, attrs).apply { id = R.id.device_entry_icon_fg }      val bgView: ImageView = ImageView(context, attrs).apply { id = R.id.device_entry_icon_bg }      val aodFpDrawable: LottieDrawable = LottieDrawable()  |