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 android.view.ViewGroup 21 import android.view.ViewTreeObserver 22 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow 23 import com.android.systemui.statusbar.phone.HeadsUpAppearanceController 24 import java.util.function.Consumer 25 import javax.inject.Inject 26 27 /** Empty implementation of ShadeViewController for variants with no shade. */ 28 class ShadeViewControllerEmptyImpl @Inject constructor() : ShadeViewController { 29 override fun expand(animate: Boolean) {} 30 override fun expandToQs() {} 31 override fun expandToNotifications() {} 32 override val isExpandingOrCollapsing: Boolean = false 33 override val isExpanded: Boolean = false 34 override val isPanelExpanded: Boolean = false 35 override val isShadeFullyExpanded: Boolean = false 36 override fun collapse(delayed: Boolean, speedUpFactor: Float) {} 37 override fun collapse(animate: Boolean, delayed: Boolean, speedUpFactor: Float) {} 38 override fun collapseWithDuration(animationDuration: Int) {} 39 override fun instantCollapse() {} 40 override fun animateCollapseQs(fullyCollapse: Boolean) {} 41 override fun canBeCollapsed(): Boolean = false 42 override val isCollapsing: Boolean = false 43 override val isFullyCollapsed: Boolean = false 44 override val isTracking: Boolean = false 45 override val isViewEnabled: Boolean = false 46 override fun setOpenCloseListener(openCloseListener: OpenCloseListener) {} 47 override fun shouldHideStatusBarIconsWhenExpanded() = false 48 override fun blockExpansionForCurrentTouch() {} 49 override fun setTrackingStartedListener(trackingStartedListener: TrackingStartedListener) {} 50 override fun disableHeader(state1: Int, state2: Int, animated: Boolean) {} 51 override fun startExpandLatencyTracking() {} 52 override fun startBouncerPreHideAnimation() {} 53 override fun dozeTimeTick() {} 54 override fun resetViews(animate: Boolean) {} 55 override val barState: Int = 0 56 override fun applyLaunchAnimationProgress(linearProgress: Float) {} 57 override fun closeUserSwitcherIfOpen(): Boolean { 58 return false 59 } 60 override fun onBackPressed() {} 61 override fun setIsLaunchAnimationRunning(running: Boolean) {} 62 override fun setAlpha(alpha: Int, animate: Boolean) {} 63 override fun setAlphaChangeAnimationEndAction(r: Runnable) {} 64 override fun setPulsing(pulsing: Boolean) {} 65 override fun setQsScrimEnabled(qsScrimEnabled: Boolean) {} 66 override fun setAmbientIndicationTop(ambientIndicationTop: Int, ambientTextVisible: Boolean) {} 67 override fun updateSystemUiStateFlags() {} 68 override fun updateTouchableRegion() {} 69 override fun addOnGlobalLayoutListener(listener: ViewTreeObserver.OnGlobalLayoutListener) {} 70 override fun removeOnGlobalLayoutListener(listener: ViewTreeObserver.OnGlobalLayoutListener) {} 71 override fun postToView(action: Runnable): Boolean { 72 return false 73 } 74 override fun transitionToExpandedShade(delay: Long) {} 75 override val isUnlockHintRunning: Boolean = false 76 77 override fun resetViewGroupFade() {} 78 override fun setKeyguardTransitionProgress(keyguardAlpha: Float, keyguardTranslationY: Int) {} 79 override fun setOverStretchAmount(amount: Float) {} 80 override fun setKeyguardStatusBarAlpha(alpha: Float) {} 81 override fun showAodUi() {} 82 override fun isFullyExpanded(): Boolean { 83 return false 84 } 85 override fun handleExternalTouch(event: MotionEvent): Boolean { 86 return false 87 } 88 override fun startTrackingExpansionFromStatusBar() {} 89 override fun performHapticFeedback(constant: Int) {} 90 91 override val shadeHeadsUpTracker = ShadeHeadsUpTrackerEmptyImpl() 92 override val shadeFoldAnimator = ShadeFoldAnimatorEmptyImpl() 93 } 94 95 class ShadeHeadsUpTrackerEmptyImpl : ShadeHeadsUpTracker { 96 override fun addTrackingHeadsUpListener(listener: Consumer<ExpandableNotificationRow>) {} 97 override fun removeTrackingHeadsUpListener(listener: Consumer<ExpandableNotificationRow>) {} 98 override fun setHeadsUpAppearanceController( 99 headsUpAppearanceController: HeadsUpAppearanceController? 100 ) {} 101 override val trackedHeadsUpNotification: ExpandableNotificationRow? = null 102 } 103 104 class ShadeFoldAnimatorEmptyImpl : ShadeFoldAnimator { 105 override fun prepareFoldToAodAnimation() {} 106 override fun startFoldToAodAnimation( 107 startAction: Runnable, 108 endAction: Runnable, 109 cancelAction: Runnable, 110 ) {} 111 override fun cancelFoldToAodAnimation() {} 112 override val view: ViewGroup? = null 113 } 114