Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt +3 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import com.android.systemui.keyguard.ui.viewmodel.KeyguardBlueprintViewModel import com.android.systemui.keyguard.ui.viewmodel.KeyguardIndicationAreaViewModel import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel import com.android.systemui.keyguard.ui.viewmodel.OccludingAppDeviceEntryMessageViewModel import com.android.systemui.plugins.FalsingManager import com.android.systemui.res.R import com.android.systemui.shade.NotificationShadeWindowView import com.android.systemui.shade.domain.interactor.ShadeInteractor Loading Loading @@ -81,6 +82,7 @@ constructor( private val interactionJankMonitor: InteractionJankMonitor, private val deviceEntryHapticsInteractor: DeviceEntryHapticsInteractor, private val vibratorHelper: VibratorHelper, private val falsingManager: FalsingManager, ) : CoreStartable { private var rootViewHandle: DisposableHandle? = null Loading Loading @@ -155,6 +157,7 @@ constructor( interactionJankMonitor, deviceEntryHapticsInteractor, vibratorHelper, falsingManager, ) } Loading packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt +5 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,9 @@ interface KeyguardRepository { val lastDozeTapToWakePosition: StateFlow<Point?> /** Last point that [KeyguardRootView] was tapped */ val lastRootViewTapPosition: MutableStateFlow<Point?> /** Observable for the [StatusBarState] */ val statusBarState: StateFlow<StatusBarState> Loading Loading @@ -418,6 +421,8 @@ constructor( _lastDozeTapToWakePosition.value = position } override val lastRootViewTapPosition: MutableStateFlow<Point?> = MutableStateFlow(null) override val isDreamingWithOverlay: Flow<Boolean> = conflatedCallbackFlow { val callback = Loading packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt +7 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,9 @@ constructor( /** Whether the keyguard is going away. */ val isKeyguardGoingAway: Flow<Boolean> = repository.isKeyguardGoingAway /** Last point that [KeyguardRootView] view was tapped */ val lastRootViewTapPosition: Flow<Point?> = repository.lastRootViewTapPosition.asStateFlow() /** Whether the primary bouncer is showing or not. */ val primaryBouncerShowing: Flow<Boolean> = bouncerRepository.primaryBouncerShow Loading Loading @@ -304,6 +307,10 @@ constructor( repository.setClockShouldBeCentered(shouldBeCentered) } fun setLastRootViewTapPosition(point: Point?) { repository.lastRootViewTapPosition.value = point } companion object { private const val TAG = "KeyguardInteractor" } Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt +15 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.systemui.keyguard.ui.binder import android.animation.Animator import android.animation.AnimatorListenerAdapter import android.annotation.DrawableRes import android.annotation.SuppressLint import android.graphics.Point import android.view.HapticFeedbackConstants import android.view.View import android.view.View.OnLayoutChangeListener Loading Loading @@ -47,6 +49,7 @@ import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel import com.android.systemui.keyguard.ui.viewmodel.OccludingAppDeviceEntryMessageViewModel import com.android.systemui.lifecycle.repeatWhenAttached import com.android.systemui.plugins.FalsingManager import com.android.systemui.plugins.clocks.ClockController import com.android.systemui.res.R import com.android.systemui.shade.domain.interactor.ShadeInteractor Loading @@ -73,6 +76,7 @@ import kotlinx.coroutines.launch @OptIn(ExperimentalCoroutinesApi::class) object KeyguardRootViewBinder { @SuppressLint("ClickableViewAccessibility") @JvmStatic fun bind( view: ViewGroup, Loading @@ -87,6 +91,7 @@ object KeyguardRootViewBinder { interactionJankMonitor: InteractionJankMonitor?, deviceEntryHapticsInteractor: DeviceEntryHapticsInteractor?, vibratorHelper: VibratorHelper?, falsingManager: FalsingManager?, ): DisposableHandle { var onLayoutChangeListener: OnLayoutChange? = null val childViews = mutableMapOf<Int, View>() Loading @@ -94,6 +99,16 @@ object KeyguardRootViewBinder { val burnInLayerId = R.id.burn_in_layer val aodNotificationIconContainerId = R.id.aod_notification_icon_container val largeClockId = R.id.lockscreen_clock_view_large if (keyguardBottomAreaRefactor()) { view.setOnTouchListener { _, event -> if (falsingManager?.isFalseTap(FalsingManager.LOW_PENALTY) == false) { viewModel.setRootViewLastTapPosition(Point(event.x.toInt(), event.y.toInt())) } false } } val disposableHandle = view.repeatWhenAttached { repeatOnLifecycle(Lifecycle.State.CREATED) { Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSettingsViewBinder.kt +18 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.systemui.keyguard.ui.binder import android.graphics.Rect import android.view.View import androidx.core.view.isVisible import androidx.lifecycle.Lifecycle Loading @@ -25,6 +26,8 @@ import com.android.systemui.animation.ActivityLaunchAnimator import com.android.systemui.animation.view.LaunchableLinearLayout import com.android.systemui.common.ui.binder.IconViewBinder import com.android.systemui.common.ui.binder.TextViewBinder import com.android.systemui.keyguard.ui.viewmodel.KeyguardLongPressViewModel import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel import com.android.systemui.keyguard.ui.viewmodel.KeyguardSettingsMenuViewModel import com.android.systemui.keyguard.util.WallpaperPickerIntentUtils import com.android.systemui.keyguard.util.WallpaperPickerIntentUtils.LAUNCH_SOURCE_KEYGUARD Loading @@ -35,12 +38,15 @@ import com.android.systemui.statusbar.VibratorHelper import kotlinx.coroutines.DisposableHandle import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.launch object KeyguardSettingsViewBinder { fun bind( parentView: View, viewModel: KeyguardSettingsMenuViewModel, longPressViewModel: KeyguardLongPressViewModel, rootViewModel: KeyguardRootViewModel, vibratorHelper: VibratorHelper, activityStarter: ActivityStarter ): DisposableHandle { Loading Loading @@ -88,6 +94,18 @@ object KeyguardSettingsViewBinder { } } } launch { rootViewModel.lastRootViewTapPosition.filterNotNull().collect { point -> if (view.isVisible) { val hitRect = Rect() view.getHitRect(hitRect) if (!hitRect.contains(point.x, point.y)) { longPressViewModel.onTouchedOutside() } } } } } } return disposableHandle Loading Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt +3 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import com.android.systemui.keyguard.ui.viewmodel.KeyguardBlueprintViewModel import com.android.systemui.keyguard.ui.viewmodel.KeyguardIndicationAreaViewModel import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel import com.android.systemui.keyguard.ui.viewmodel.OccludingAppDeviceEntryMessageViewModel import com.android.systemui.plugins.FalsingManager import com.android.systemui.res.R import com.android.systemui.shade.NotificationShadeWindowView import com.android.systemui.shade.domain.interactor.ShadeInteractor Loading Loading @@ -81,6 +82,7 @@ constructor( private val interactionJankMonitor: InteractionJankMonitor, private val deviceEntryHapticsInteractor: DeviceEntryHapticsInteractor, private val vibratorHelper: VibratorHelper, private val falsingManager: FalsingManager, ) : CoreStartable { private var rootViewHandle: DisposableHandle? = null Loading Loading @@ -155,6 +157,7 @@ constructor( interactionJankMonitor, deviceEntryHapticsInteractor, vibratorHelper, falsingManager, ) } Loading
packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt +5 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,9 @@ interface KeyguardRepository { val lastDozeTapToWakePosition: StateFlow<Point?> /** Last point that [KeyguardRootView] was tapped */ val lastRootViewTapPosition: MutableStateFlow<Point?> /** Observable for the [StatusBarState] */ val statusBarState: StateFlow<StatusBarState> Loading Loading @@ -418,6 +421,8 @@ constructor( _lastDozeTapToWakePosition.value = position } override val lastRootViewTapPosition: MutableStateFlow<Point?> = MutableStateFlow(null) override val isDreamingWithOverlay: Flow<Boolean> = conflatedCallbackFlow { val callback = Loading
packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt +7 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,9 @@ constructor( /** Whether the keyguard is going away. */ val isKeyguardGoingAway: Flow<Boolean> = repository.isKeyguardGoingAway /** Last point that [KeyguardRootView] view was tapped */ val lastRootViewTapPosition: Flow<Point?> = repository.lastRootViewTapPosition.asStateFlow() /** Whether the primary bouncer is showing or not. */ val primaryBouncerShowing: Flow<Boolean> = bouncerRepository.primaryBouncerShow Loading Loading @@ -304,6 +307,10 @@ constructor( repository.setClockShouldBeCentered(shouldBeCentered) } fun setLastRootViewTapPosition(point: Point?) { repository.lastRootViewTapPosition.value = point } companion object { private const val TAG = "KeyguardInteractor" } Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt +15 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.systemui.keyguard.ui.binder import android.animation.Animator import android.animation.AnimatorListenerAdapter import android.annotation.DrawableRes import android.annotation.SuppressLint import android.graphics.Point import android.view.HapticFeedbackConstants import android.view.View import android.view.View.OnLayoutChangeListener Loading Loading @@ -47,6 +49,7 @@ import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel import com.android.systemui.keyguard.ui.viewmodel.OccludingAppDeviceEntryMessageViewModel import com.android.systemui.lifecycle.repeatWhenAttached import com.android.systemui.plugins.FalsingManager import com.android.systemui.plugins.clocks.ClockController import com.android.systemui.res.R import com.android.systemui.shade.domain.interactor.ShadeInteractor Loading @@ -73,6 +76,7 @@ import kotlinx.coroutines.launch @OptIn(ExperimentalCoroutinesApi::class) object KeyguardRootViewBinder { @SuppressLint("ClickableViewAccessibility") @JvmStatic fun bind( view: ViewGroup, Loading @@ -87,6 +91,7 @@ object KeyguardRootViewBinder { interactionJankMonitor: InteractionJankMonitor?, deviceEntryHapticsInteractor: DeviceEntryHapticsInteractor?, vibratorHelper: VibratorHelper?, falsingManager: FalsingManager?, ): DisposableHandle { var onLayoutChangeListener: OnLayoutChange? = null val childViews = mutableMapOf<Int, View>() Loading @@ -94,6 +99,16 @@ object KeyguardRootViewBinder { val burnInLayerId = R.id.burn_in_layer val aodNotificationIconContainerId = R.id.aod_notification_icon_container val largeClockId = R.id.lockscreen_clock_view_large if (keyguardBottomAreaRefactor()) { view.setOnTouchListener { _, event -> if (falsingManager?.isFalseTap(FalsingManager.LOW_PENALTY) == false) { viewModel.setRootViewLastTapPosition(Point(event.x.toInt(), event.y.toInt())) } false } } val disposableHandle = view.repeatWhenAttached { repeatOnLifecycle(Lifecycle.State.CREATED) { Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSettingsViewBinder.kt +18 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.systemui.keyguard.ui.binder import android.graphics.Rect import android.view.View import androidx.core.view.isVisible import androidx.lifecycle.Lifecycle Loading @@ -25,6 +26,8 @@ import com.android.systemui.animation.ActivityLaunchAnimator import com.android.systemui.animation.view.LaunchableLinearLayout import com.android.systemui.common.ui.binder.IconViewBinder import com.android.systemui.common.ui.binder.TextViewBinder import com.android.systemui.keyguard.ui.viewmodel.KeyguardLongPressViewModel import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel import com.android.systemui.keyguard.ui.viewmodel.KeyguardSettingsMenuViewModel import com.android.systemui.keyguard.util.WallpaperPickerIntentUtils import com.android.systemui.keyguard.util.WallpaperPickerIntentUtils.LAUNCH_SOURCE_KEYGUARD Loading @@ -35,12 +38,15 @@ import com.android.systemui.statusbar.VibratorHelper import kotlinx.coroutines.DisposableHandle import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.launch object KeyguardSettingsViewBinder { fun bind( parentView: View, viewModel: KeyguardSettingsMenuViewModel, longPressViewModel: KeyguardLongPressViewModel, rootViewModel: KeyguardRootViewModel, vibratorHelper: VibratorHelper, activityStarter: ActivityStarter ): DisposableHandle { Loading Loading @@ -88,6 +94,18 @@ object KeyguardSettingsViewBinder { } } } launch { rootViewModel.lastRootViewTapPosition.filterNotNull().collect { point -> if (view.isVisible) { val hitRect = Rect() view.getHitRect(hitRect) if (!hitRect.contains(point.x, point.y)) { longPressViewModel.onTouchedOutside() } } } } } } return disposableHandle Loading