• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.systemui.statusbar.notification.fsi
2 
3 import android.content.Context
4 import android.graphics.Color
5 import android.graphics.Color.DKGRAY
6 import android.graphics.Outline
7 import android.util.AttributeSet
8 import android.view.View
9 import android.view.ViewOutlineProvider
10 import android.widget.Button
11 import android.widget.ImageView
12 import android.widget.LinearLayout
13 import android.widget.TextView
14 import com.android.systemui.R
15 import com.android.systemui.dagger.SysUISingleton
16 import com.android.systemui.statusbar.notification.fsi.FsiDebug.Companion.log
17 
18 @SysUISingleton
19 class FsiChromeView
20 @JvmOverloads
21 constructor(
22     context: Context?,
23     attrs: AttributeSet? = null,
24     defStyleAttr: Int = 0,
25     defStyleRes: Int = 0
26 ) : LinearLayout(context, attrs, defStyleAttr, defStyleRes) {
27 
28     companion object {
29         private const val classTag = "FsiChromeView"
30     }
31 
32     lateinit var chromeContainer: LinearLayout
33     lateinit var appIconImageView: ImageView
34     lateinit var appNameTextView: TextView
35     lateinit var dismissButton: Button
36     lateinit var fullscreenButton: Button
37 
38     private val cornerRadius: Float =
39         resources.getDimensionPixelSize(R.dimen.notification_corner_radius).toFloat()
40     private val vertPadding: Int =
41         resources.getDimensionPixelSize(R.dimen.fsi_chrome_vertical_padding)
42     private val sidePadding: Int =
43         resources.getDimensionPixelSize(R.dimen.notification_side_paddings)
44 
45     init {
46         log("$classTag init")
47     }
48 
onFinishInflatenull49     override fun onFinishInflate() {
50         log("$classTag onFinishInflate")
51         super.onFinishInflate()
52 
53         setBackgroundColor(Color.TRANSPARENT)
54         setPadding(
55             sidePadding,
56             vertPadding,
57             sidePadding,
58             vertPadding
59         ) // Make smaller than fullscreen.
60 
61         chromeContainer = findViewById(R.id.fsi_chrome)
62         chromeContainer.setBackgroundColor(DKGRAY)
63 
64         appIconImageView = findViewById(R.id.fsi_app_icon)
65         appNameTextView = findViewById(R.id.fsi_app_name)
66         dismissButton = findViewById(R.id.fsi_dismiss_button)
67         fullscreenButton = findViewById(R.id.fsi_fullscreen_button)
68 
69         outlineProvider =
70             object : ViewOutlineProvider() {
71                 override fun getOutline(view: View, outline: Outline) {
72                     outline.setRoundRect(
73                         /* left */ sidePadding,
74                         /* top */ vertPadding,
75                         /* right */ view.width - sidePadding,
76                         /* bottom */ view.height - vertPadding,
77                         cornerRadius
78                     )
79                 }
80             }
81         clipToOutline = true
82     }
83 }
84