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 
18 package com.android.systemui.keyguard.ui.view.layout.sections
19 
20 import android.view.ViewGroup.LayoutParams.MATCH_PARENT
21 import androidx.constraintlayout.widget.ConstraintSet
22 import androidx.constraintlayout.widget.ConstraintSet.BOTTOM
23 import androidx.constraintlayout.widget.ConstraintSet.END
24 import androidx.constraintlayout.widget.ConstraintSet.MATCH_CONSTRAINT
25 import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID
26 import androidx.constraintlayout.widget.ConstraintSet.START
27 import androidx.constraintlayout.widget.ConstraintSet.TOP
28 import androidx.constraintlayout.widget.ConstraintSet.WRAP_CONTENT
29 import com.android.keyguard.KeyguardUpdateMonitor
30 import com.android.systemui.R
31 import com.android.systemui.keyguard.data.repository.KeyguardSection
32 import javax.inject.Inject
33 
34 class DefaultAmbientIndicationAreaSection
35 @Inject
36 constructor(private val keyguardUpdateMonitor: KeyguardUpdateMonitor) : KeyguardSection {
37     override fun apply(constraintSet: ConstraintSet) {
38         constraintSet.apply {
39             constrainWidth(R.id.ambient_indication_container, MATCH_PARENT)
40 
41             if (keyguardUpdateMonitor.isUdfpsSupported) {
42                 // constrain below udfps and above indication area
43                 constrainHeight(R.id.ambient_indication_container, MATCH_CONSTRAINT)
44                 connect(R.id.ambient_indication_container, TOP, R.id.lock_icon_view, BOTTOM)
45                 connect(
46                     R.id.ambient_indication_container,
47                     BOTTOM,
48                     R.id.keyguard_indication_area,
49                     TOP
50                 )
51                 connect(R.id.ambient_indication_container, START, PARENT_ID, START)
52                 connect(R.id.ambient_indication_container, END, PARENT_ID, END)
53             } else {
54                 // constrain above lock icon
55                 constrainHeight(R.id.ambient_indication_container, WRAP_CONTENT)
56                 connect(R.id.ambient_indication_container, BOTTOM, R.id.lock_icon_view, TOP)
57                 connect(R.id.ambient_indication_container, START, PARENT_ID, START)
58                 connect(R.id.ambient_indication_container, END, PARENT_ID, END)
59             }
60         }
61     }
62 }
63