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