1 /*
2  * Copyright (C) 2015 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 package com.android.systemui.qs.pipeline.domain.interactor
17 
18 import com.android.systemui.dagger.SysUISingleton
19 import com.android.systemui.shade.ShadeController
20 import javax.inject.Inject
21 
22 /** Encapsulates business logic for interacting with the QS panel. */
23 interface PanelInteractor {
24 
25     /** Collapse the shade */
collapsePanelsnull26     fun collapsePanels()
27 
28     /** Collapse the shade forcefully, skipping some animations. */
29     fun forceCollapsePanels()
30 
31     /** Open the Quick Settings panel */
32     fun openPanels()
33 }
34 
35 @SysUISingleton
36 class PanelInteractorImpl
37 @Inject
38 constructor(
39     private val shadeController: ShadeController,
40 ) : PanelInteractor {
41     override fun collapsePanels() {
42         shadeController.postAnimateCollapseShade()
43     }
44 
45     override fun forceCollapsePanels() {
46         shadeController.postAnimateForceCollapseShade()
47     }
48 
49     override fun openPanels() {
50         shadeController.postAnimateExpandQs()
51     }
52 }
53