• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.keyguard.ui.view.layout.sections
18 
19 import android.content.Context
20 import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
21 import android.widget.FrameLayout
22 import androidx.constraintlayout.widget.ConstraintLayout
23 import androidx.constraintlayout.widget.ConstraintSet
24 import androidx.constraintlayout.widget.ConstraintSet.BOTTOM
25 import androidx.constraintlayout.widget.ConstraintSet.END
26 import androidx.constraintlayout.widget.ConstraintSet.MATCH_CONSTRAINT
27 import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID
28 import androidx.constraintlayout.widget.ConstraintSet.START
29 import androidx.constraintlayout.widget.ConstraintSet.TOP
30 import com.android.systemui.customization.R as customR
31 import com.android.systemui.keyguard.shared.model.KeyguardSection
32 import com.android.systemui.media.controls.ui.controller.KeyguardMediaController
33 import com.android.systemui.res.R
34 import com.android.systemui.shade.ShadeDisplayAware
35 import javax.inject.Inject
36 
37 /** Aligns media on left side for split shade, below smartspace, date, and weather. */
38 class SplitShadeMediaSection
39 @Inject
40 constructor(
41     @ShadeDisplayAware private val context: Context,
42     private val keyguardMediaController: KeyguardMediaController,
43 ) : KeyguardSection() {
44     private val mediaContainerId = R.id.status_view_media_container
45 
addViewsnull46     override fun addViews(constraintLayout: ConstraintLayout) {
47         val mediaFrame =
48             FrameLayout(context, null).apply {
49                 id = mediaContainerId
50                 val padding = context.resources.getDimensionPixelSize(R.dimen.qs_media_padding)
51                 val horizontalPadding =
52                     padding +
53                         context.resources.getDimensionPixelSize(
54                             customR.dimen.status_view_margin_horizontal
55                         )
56 
57                 setPaddingRelative(horizontalPadding, padding, horizontalPadding, padding)
58             }
59         constraintLayout.addView(mediaFrame)
60         keyguardMediaController.attachSplitShadeContainer(mediaFrame)
61     }
62 
bindDatanull63     override fun bindData(constraintLayout: ConstraintLayout) {}
64 
applyConstraintsnull65     override fun applyConstraints(constraintSet: ConstraintSet) {
66         constraintSet.apply {
67             constrainWidth(mediaContainerId, MATCH_CONSTRAINT)
68             constrainHeight(mediaContainerId, WRAP_CONTENT)
69             connect(mediaContainerId, TOP, R.id.smart_space_barrier_bottom, BOTTOM)
70             connect(mediaContainerId, START, PARENT_ID, START)
71             connect(mediaContainerId, END, R.id.split_shade_guideline, END)
72         }
73     }
74 
removeViewsnull75     override fun removeViews(constraintLayout: ConstraintLayout) {
76         constraintLayout.removeView(mediaContainerId)
77     }
78 }
79