summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Lyn Han <lynhan@google.com> 2022-12-20 06:16:20 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-12-20 06:16:20 +0000
commit0bedab00cae90df676192dec32ae05b3f9d9992d (patch)
treeca05feb9e1cabf0ea546b23842611d474aef7054
parentec5158d7da8efe0cd88a0c210ff493790e6afaca (diff)
parentd94a83eabec0bbe9895e109a0ab03ca806ea658f (diff)
Merge "Add FSI view" into tm-qpr-dev
-rw-r--r--packages/SystemUI/res-keyguard/layout/fsi_chrome_view.xml49
-rw-r--r--packages/SystemUI/res/values/dimens.xml3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/fsi/FsiChromeView.kt83
3 files changed, 135 insertions, 0 deletions
diff --git a/packages/SystemUI/res-keyguard/layout/fsi_chrome_view.xml b/packages/SystemUI/res-keyguard/layout/fsi_chrome_view.xml
new file mode 100644
index 000000000000..4ff2967b5ddf
--- /dev/null
+++ b/packages/SystemUI/res-keyguard/layout/fsi_chrome_view.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<com.android.systemui.statusbar.notification.fsi.FsiChromeView android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_margin="50dp"
+ android:orientation="vertical"
+ xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:id="@+id/fsi_chrome"
+ android:layout_height="50dp"
+ android:orientation="horizontal">
+
+ <ImageView
+ android:id="@+id/fsi_app_icon"
+ android:layout_width="50dp"
+ android:layout_height="match_parent"
+ android:contentDescription="@null" />
+
+ <TextView
+ android:id="@+id/fsi_app_name"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:padding="10dp"
+ android:textSize="22dp"
+ android:gravity="center"
+ android:textColor="#FFFFFF"
+ android:text="AppName" />
+
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_weight="1" />
+
+ <Button
+ android:id="@+id/fsi_fullscreen_button"
+ android:layout_width="100dp"
+ android:layout_height="match_parent"
+ android:text="fullscreen" />
+
+ <Button
+ android:id="@+id/fsi_dismiss_button"
+ android:layout_width="100dp"
+ android:layout_height="match_parent"
+ android:text="dismiss" />
+
+ </LinearLayout>
+
+</com.android.systemui.statusbar.notification.fsi.FsiChromeView> \ No newline at end of file
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index e8a8534581d2..87d2c51c7325 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -218,6 +218,9 @@
<!-- Radius for notifications corners with adjacent notifications -->
<dimen name="notification_corner_radius_small">4dp</dimen>
+ <!-- Vertical padding of the FSI container -->
+ <dimen name="fsi_chrome_vertical_padding">80dp</dimen>
+
<!-- the padding of the shelf icon container -->
<dimen name="shelf_icon_container_padding">13dp</dimen>
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/fsi/FsiChromeView.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/fsi/FsiChromeView.kt
new file mode 100644
index 000000000000..6e5fcf40440c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/fsi/FsiChromeView.kt
@@ -0,0 +1,83 @@
+package com.android.systemui.statusbar.notification.fsi
+
+import android.content.Context
+import android.graphics.Color
+import android.graphics.Color.DKGRAY
+import android.graphics.Outline
+import android.util.AttributeSet
+import android.view.View
+import android.view.ViewOutlineProvider
+import android.widget.Button
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.TextView
+import com.android.systemui.R
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.statusbar.notification.fsi.FsiDebug.Companion.log
+
+@SysUISingleton
+class FsiChromeView
+@JvmOverloads
+constructor(
+ context: Context?,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0,
+ defStyleRes: Int = 0
+) : LinearLayout(context, attrs, defStyleAttr, defStyleRes) {
+
+ companion object {
+ private const val classTag = "FsiChromeView"
+ }
+
+ lateinit var chromeContainer: LinearLayout
+ lateinit var appIconImageView: ImageView
+ lateinit var appNameTextView: TextView
+ lateinit var dismissButton: Button
+ lateinit var fullscreenButton: Button
+
+ private val cornerRadius: Float =
+ resources.getDimensionPixelSize(R.dimen.notification_corner_radius).toFloat()
+ private val vertPadding: Int =
+ resources.getDimensionPixelSize(R.dimen.fsi_chrome_vertical_padding)
+ private val sidePadding: Int =
+ resources.getDimensionPixelSize(R.dimen.notification_side_paddings)
+
+ init {
+ log("$classTag init")
+ }
+
+ override fun onFinishInflate() {
+ log("$classTag onFinishInflate")
+ super.onFinishInflate()
+
+ setBackgroundColor(Color.TRANSPARENT)
+ setPadding(
+ sidePadding,
+ vertPadding,
+ sidePadding,
+ vertPadding
+ ) // Make smaller than fullscreen.
+
+ chromeContainer = findViewById(R.id.fsi_chrome)
+ chromeContainer.setBackgroundColor(DKGRAY)
+
+ appIconImageView = findViewById(R.id.fsi_app_icon)
+ appNameTextView = findViewById(R.id.fsi_app_name)
+ dismissButton = findViewById(R.id.fsi_dismiss_button)
+ fullscreenButton = findViewById(R.id.fsi_fullscreen_button)
+
+ outlineProvider =
+ object : ViewOutlineProvider() {
+ override fun getOutline(view: View, outline: Outline) {
+ outline.setRoundRect(
+ /* left */ sidePadding,
+ /* top */ vertPadding,
+ /* right */ view.width - sidePadding,
+ /* bottom */ view.height - vertPadding,
+ cornerRadius
+ )
+ }
+ }
+ clipToOutline = true
+ }
+}