1 /* 2 * Copyright (C) 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.systemui.shade 18 19 import android.view.MotionEvent 20 import com.android.systemui.shade.domain.interactor.PanelExpansionInteractor 21 import com.android.systemui.shade.domain.interactor.ShadeBackActionInteractor 22 import com.android.systemui.shade.domain.interactor.ShadeLockscreenInteractor 23 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow 24 import com.android.systemui.statusbar.phone.HeadsUpAppearanceController 25 import java.util.function.Consumer 26 import javax.inject.Inject 27 import kotlinx.coroutines.flow.MutableStateFlow 28 import kotlinx.coroutines.flow.flowOf 29 30 /** Empty implementation of ShadeViewController for variants with no shade. */ 31 open class ShadeViewControllerEmptyImpl @Inject constructor() : 32 ShadeViewController, 33 ShadeBackActionInteractor, 34 ShadeLockscreenInteractor, 35 PanelExpansionInteractor { expandToNotificationsnull36 @Deprecated("Use ShadeInteractor instead") override fun expandToNotifications() {} 37 38 @Deprecated("Use ShadeInteractor instead") override val isExpanded: Boolean = false 39 override val isPanelExpanded: Boolean = false 40 animateCollapseQsnull41 override fun animateCollapseQs(fullyCollapse: Boolean) {} 42 canBeCollapsednull43 override fun canBeCollapsed(): Boolean = false 44 45 @Deprecated("Use ShadeAnimationInteractor instead") override val isCollapsing: Boolean = false 46 @Deprecated("Use !ShadeInteractor.isAnyExpanded instead") 47 override val isFullyCollapsed: Boolean = false 48 override val isTracking: Boolean = false 49 override val isViewEnabled: Boolean = false 50 51 override fun shouldHideStatusBarIconsWhenExpanded() = false 52 53 @Deprecated("Not supported by scenes") override fun blockExpansionForCurrentTouch() {} 54 startExpandLatencyTrackingnull55 override fun startExpandLatencyTracking() {} 56 resetViewsnull57 override fun resetViews(animate: Boolean) {} 58 59 override val barState: Int = 0 60 onBackPressednull61 override fun onBackPressed() {} 62 63 @Deprecated("According to b/318376223, shade predictive back is not be supported.") onBackProgressednull64 override fun onBackProgressed(progressFraction: Float) {} 65 setAlphanull66 override fun setAlpha(alpha: Int, animate: Boolean) {} 67 setAlphaChangeAnimationEndActionnull68 override fun setAlphaChangeAnimationEndAction(r: Runnable) {} 69 setPulsingnull70 @Deprecated("Not supported by scenes") override fun setPulsing(pulsing: Boolean) {} 71 setQsScrimEnablednull72 override fun setQsScrimEnabled(qsScrimEnabled: Boolean) {} 73 updateSystemUiStateFlagsnull74 override fun updateSystemUiStateFlags() {} 75 updateTouchableRegionnull76 override fun updateTouchableRegion() {} 77 transitionToExpandedShadenull78 override fun transitionToExpandedShade(delay: Long) {} 79 resetViewGroupFadenull80 @Deprecated("Not supported by scenes") override fun resetViewGroupFade() {} 81 setOverStretchAmountnull82 @Deprecated("Not supported by scenes") override fun setOverStretchAmount(amount: Float) {} 83 84 @Deprecated("TODO(b/325072511) delete this") setKeyguardStatusBarAlphanull85 override fun setKeyguardStatusBarAlpha(alpha: Float) {} 86 showAodUinull87 override fun showAodUi() {} 88 89 @Deprecated( 90 "depends on the state you check, use {@link #isShadeFullyExpanded()},\n" + 91 "{@link #isOnAod()}, {@link #isOnKeyguard()} instead." 92 ) 93 override val isFullyExpanded = false 94 handleExternalTouchnull95 override fun handleExternalTouch(event: MotionEvent): Boolean { 96 return false 97 } 98 handleExternalInterceptTouchnull99 override fun handleExternalInterceptTouch(event: MotionEvent): Boolean { 100 return false 101 } 102 startInputFocusTransfernull103 override fun startInputFocusTransfer() {} 104 cancelInputFocusTransfernull105 override fun cancelInputFocusTransfer() {} 106 finishInputFocusTransfernull107 override fun finishInputFocusTransfer(velocity: Float) {} 108 109 @Deprecated("Temporary a11y solution until dual shade launch b/371224114") onStatusBarLongPressnull110 override fun onStatusBarLongPress(event: MotionEvent) {} 111 112 override val shadeHeadsUpTracker = ShadeHeadsUpTrackerEmptyImpl() 113 override val shadeFoldAnimator = ShadeFoldAnimatorEmptyImpl() 114 @Deprecated("Use SceneInteractor.currentScene instead.") 115 override val legacyPanelExpansion = flowOf(0f) 116 override val udfpsTransitionToFullShadeProgress = MutableStateFlow(0f) 117 } 118 119 class ShadeHeadsUpTrackerEmptyImpl : ShadeHeadsUpTracker { addTrackingHeadsUpListenernull120 override fun addTrackingHeadsUpListener(listener: Consumer<ExpandableNotificationRow>) {} 121 removeTrackingHeadsUpListenernull122 override fun removeTrackingHeadsUpListener(listener: Consumer<ExpandableNotificationRow>) {} 123 setHeadsUpAppearanceControllernull124 override fun setHeadsUpAppearanceController( 125 headsUpAppearanceController: HeadsUpAppearanceController? 126 ) {} 127 128 override val trackedHeadsUpNotification: ExpandableNotificationRow? = null 129 } 130 131 class ShadeFoldAnimatorEmptyImpl : ShadeFoldAnimator { prepareFoldToAodAnimationnull132 override fun prepareFoldToAodAnimation() {} 133 startFoldToAodAnimationnull134 override fun startFoldToAodAnimation( 135 startAction: Runnable, 136 endAction: Runnable, 137 cancelAction: Runnable, 138 ) {} 139 cancelFoldToAodAnimationnull140 override fun cancelFoldToAodAnimation() {} 141 } 142