Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 48af9196 authored by Fabian Kozynski's avatar Fabian Kozynski Committed by Android (Google) Code Review
Browse files

Merge "Change Chip between QS and QQS"

parents 9b5f31b8 216812e9
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@


<shape xmlns:android="http://schemas.android.com/apk/res/android">
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#4a4a4a" />
    <solid android:color="#4a4a4a" />
    <padding android:padding="@dimen/ongoing_appops_chip_bg_padding" />
    <padding android:paddingTop="@dimen/ongoing_appops_chip_bg_padding"
        android:paddingBottom="@dimen/ongoing_appops_chip_bg_padding"/>
    <corners android:radius="@dimen/ongoing_appops_chip_bg_corner_radius" />
    <corners android:radius="@dimen/ongoing_appops_chip_bg_corner_radius" />
</shape>
</shape>
 No newline at end of file
+15 −4
Original line number Original line Diff line number Diff line
@@ -29,14 +29,25 @@
    android:orientation="horizontal"
    android:orientation="horizontal"
    android:paddingStart="@dimen/ongoing_appops_chip_side_padding"
    android:paddingStart="@dimen/ongoing_appops_chip_side_padding"
    android:paddingEnd="@dimen/ongoing_appops_chip_side_padding"
    android:paddingEnd="@dimen/ongoing_appops_chip_side_padding"
    android:background="@drawable/privacy_chip_bg"
    android:focusable="true">
    android:focusable="true">


        <TextView
            android:id="@+id/in_use_text"
            android:layout_height="match_parent"
            android:layout_width="wrap_content"
            android:layout_gravity="center_vertical|start"
            android:layout_marginEnd="@dimen/ongoing_appops_chip_icon_margin_collapsed"
            android:gravity="center_vertical"
            android:textAppearance="@style/TextAppearance.StatusBar.Clock"
            android:textColor="@color/status_bar_clock_color"
            android:text="@string/ongoing_privacy_chip_in_use"
            />

        <LinearLayout
        <LinearLayout
            android:id="@+id/icons_container"
            android:id="@+id/icons_container"
            android:layout_height="match_parent"
            android:layout_height="match_parent"
            android:layout_width="wrap_content"
            android:layout_width="wrap_content"
            android:layout_gravity="center_vertical|start"
            android:layout_gravity="center_vertical"
            android:gravity="center_vertical"
            android:gravity="center_vertical"
            />
            />


@@ -51,7 +62,7 @@
            android:gravity="center_vertical"
            android:gravity="center_vertical"
            android:textAppearance="@style/TextAppearance.StatusBar.Clock"
            android:textAppearance="@style/TextAppearance.StatusBar.Clock"
            android:textColor="@color/status_bar_clock_color"
            android:textColor="@color/status_bar_clock_color"
            android:layout_marginStart="@dimen/ongoing_appops_chip_icon_margin"
            android:layout_marginStart="@dimen/ongoing_appops_chip_icon_margin_collapsed"
            android:layout_marginEnd="@dimen/ongoing_appops_chip_icon_margin"
            android:layout_marginEnd="@dimen/ongoing_appops_chip_icon_margin_collapsed"
        />
        />
</com.android.systemui.privacy.OngoingPrivacyChip>
</com.android.systemui.privacy.OngoingPrivacyChip>
 No newline at end of file
+6 −4
Original line number Original line Diff line number Diff line
@@ -967,7 +967,7 @@
    <!-- Height and width of App Opp icons in Ongoing App Ops dialog -->
    <!-- Height and width of App Opp icons in Ongoing App Ops dialog -->
    <dimen name="ongoing_appops_dialog_icon_size">24dp</dimen>
    <dimen name="ongoing_appops_dialog_icon_size">24dp</dimen>
    <!-- Left margin of App Opp icons in Ongoing App Ops dialog -->
    <!-- Left margin of App Opp icons in Ongoing App Ops dialog -->
    <dimen name="ongoing_appops_dialog_icon_margin">8dp</dimen>
    <dimen name="ongoing_appops_dialog_icon_margin">12dp</dimen>
    <!-- Height and width of Application icons in Ongoing App Ops dialog -->
    <!-- Height and width of Application icons in Ongoing App Ops dialog -->
    <dimen name="ongoing_appops_dialog_app_icon_size">32dp</dimen>
    <dimen name="ongoing_appops_dialog_app_icon_size">32dp</dimen>
    <!-- Height and width of Plus sign in Ongoing App Ops dialog -->
    <!-- Height and width of Plus sign in Ongoing App Ops dialog -->
@@ -988,12 +988,14 @@
    <dimen name="ongoing_appops_chip_side_padding">6dp</dimen>
    <dimen name="ongoing_appops_chip_side_padding">6dp</dimen>
    <!-- Padding between background of Ongoing App Ops chip and content -->
    <!-- Padding between background of Ongoing App Ops chip and content -->
    <dimen name="ongoing_appops_chip_bg_padding">0dp</dimen>
    <dimen name="ongoing_appops_chip_bg_padding">0dp</dimen>
    <!-- Margin between icons of Ongoing App Ops chip -->
    <!-- Margin between icons of Ongoing App Ops chip when QQS-->
    <dimen name="ongoing_appops_chip_icon_margin">4dp</dimen>
    <dimen name="ongoing_appops_chip_icon_margin_collapsed">0dp</dimen>
    <!-- Margin between icons of Ongoing App Ops chip when QS-->
    <dimen name="ongoing_appops_chip_icon_margin_expanded">8dp</dimen>
    <!-- Icon size of Ongoing App Ops chip -->
    <!-- Icon size of Ongoing App Ops chip -->
    <dimen name="ongoing_appops_chip_icon_size">18dp</dimen>
    <dimen name="ongoing_appops_chip_icon_size">18dp</dimen>
    <!-- Radius of Ongoing App Ops chip corners -->
    <!-- Radius of Ongoing App Ops chip corners -->
    <dimen name="ongoing_appops_chip_bg_corner_radius">12dp</dimen>
    <dimen name="ongoing_appops_chip_bg_corner_radius">4dp</dimen>
    <!-- Text size for Ongoing App Ops dialog title -->
    <!-- Text size for Ongoing App Ops dialog title -->
    <dimen name="ongoing_appops_dialog_title_size">20sp</dimen>
    <dimen name="ongoing_appops_dialog_title_size">20sp</dimen>
    <!-- Text size for Ongoing App Ops dialog items -->
    <!-- Text size for Ongoing App Ops dialog items -->
+3 −0
Original line number Original line Diff line number Diff line
@@ -2301,6 +2301,9 @@
    <!-- Content description for ongoing privacy chip. Use with multiple apps [CHAR LIMIT=NONE]-->
    <!-- Content description for ongoing privacy chip. Use with multiple apps [CHAR LIMIT=NONE]-->
    <string name="ongoing_privacy_chip_content_multiple_apps">Applications are using your <xliff:g id="types_list" example="camera, location">%s</xliff:g>.</string>
    <string name="ongoing_privacy_chip_content_multiple_apps">Applications are using your <xliff:g id="types_list" example="camera, location">%s</xliff:g>.</string>


    <!-- Ongoing Privacy "Chip" in use text [CHAR LIMIT=10]-->
    <string name="ongoing_privacy_chip_in_use">In use:</string>

    <!-- Content description for ongoing privacy chip. Use with multiple apps using same app op[CHAR LIMIT=NONE]-->
    <!-- Content description for ongoing privacy chip. Use with multiple apps using same app op[CHAR LIMIT=NONE]-->
    <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op">
    <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op">
        <item quantity="one"><xliff:g id="num_apps" example="1">%1$d</xliff:g> application is using your <xliff:g id="type" example="camera">%2$s</xliff:g>.</item>
        <item quantity="one"><xliff:g id="num_apps" example="1">%1$d</xliff:g> application is using your <xliff:g id="type" example="camera">%2$s</xliff:g>.</item>
+26 −9
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@ package com.android.systemui.privacy


import android.content.Context
import android.content.Context
import android.util.AttributeSet
import android.util.AttributeSet
import android.view.View
import android.view.ViewGroup
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.LinearLayout
@@ -29,14 +30,25 @@ class OngoingPrivacyChip @JvmOverloads constructor(
    defStyleRes: Int = 0
    defStyleRes: Int = 0
) : LinearLayout(context, attrs, defStyleAttrs, defStyleRes) {
) : LinearLayout(context, attrs, defStyleAttrs, defStyleRes) {


    private val iconMargin =
    private val iconMarginExpanded = context.resources.getDimensionPixelSize(
            context.resources.getDimensionPixelSize(R.dimen.ongoing_appops_chip_icon_margin)
                    R.dimen.ongoing_appops_chip_icon_margin_expanded)
    private val iconMarginCollapsed = context.resources.getDimensionPixelSize(
                    R.dimen.ongoing_appops_chip_icon_margin_collapsed)
    private val iconSize =
    private val iconSize =
            context.resources.getDimensionPixelSize(R.dimen.ongoing_appops_chip_icon_size)
            context.resources.getDimensionPixelSize(R.dimen.ongoing_appops_chip_icon_size)
    val iconColor = context.resources.getColor(
    private val iconColor = context.resources.getColor(
            R.color.status_bar_clock_color, context.theme)
            R.color.status_bar_clock_color, context.theme)
    private val backgroundDrawable = context.getDrawable(R.drawable.privacy_chip_bg)
    private lateinit var text: TextView
    private lateinit var text: TextView
    private lateinit var iconsContainer: LinearLayout
    private lateinit var iconsContainer: LinearLayout
    private lateinit var inUseText: TextView
    var expanded = false
        set(value) {
            if (value != field) {
                field = value
                updateView()
            }
        }
    var builder = PrivacyDialogBuilder(context, emptyList<PrivacyItem>())
    var builder = PrivacyDialogBuilder(context, emptyList<PrivacyItem>())
    var privacyList = emptyList<PrivacyItem>()
    var privacyList = emptyList<PrivacyItem>()
        set(value) {
        set(value) {
@@ -48,15 +60,18 @@ class OngoingPrivacyChip @JvmOverloads constructor(
    override fun onFinishInflate() {
    override fun onFinishInflate() {
        super.onFinishInflate()
        super.onFinishInflate()


        inUseText = findViewById(R.id.in_use_text)
        text = findViewById(R.id.text_container)
        text = findViewById(R.id.text_container)
        iconsContainer = findViewById(R.id.icons_container)
        iconsContainer = findViewById(R.id.icons_container)
    }
    }


    // Should only be called if the builder icons or app changed
    // Should only be called if the builder icons or app changed
    private fun updateView() {
    private fun updateView() {
        inUseText.visibility = if (expanded) View.GONE else View.VISIBLE
        background = if (expanded) backgroundDrawable else null
        fun setIcons(dialogBuilder: PrivacyDialogBuilder, iconsContainer: ViewGroup) {
        fun setIcons(dialogBuilder: PrivacyDialogBuilder, iconsContainer: ViewGroup) {
            iconsContainer.removeAllViews()
            iconsContainer.removeAllViews()
            dialogBuilder.generateIcons().forEach {
            dialogBuilder.generateIcons().forEachIndexed { i, it ->
                it.mutate()
                it.mutate()
                it.setTint(iconColor)
                it.setTint(iconColor)
                val image = ImageView(context).apply {
                val image = ImageView(context).apply {
@@ -64,17 +79,19 @@ class OngoingPrivacyChip @JvmOverloads constructor(
                    scaleType = ImageView.ScaleType.CENTER_INSIDE
                    scaleType = ImageView.ScaleType.CENTER_INSIDE
                }
                }
                iconsContainer.addView(image, iconSize, iconSize)
                iconsContainer.addView(image, iconSize, iconSize)
                if (i != 0) {
                    val lp = image.layoutParams as MarginLayoutParams
                    val lp = image.layoutParams as MarginLayoutParams
                lp.marginStart = iconMargin
                    lp.marginStart = if (expanded) iconMarginExpanded else iconMarginCollapsed
                    image.layoutParams = lp
                    image.layoutParams = lp
                }
                }
            }
            }
        }


        if (!privacyList.isEmpty()) {
        if (!privacyList.isEmpty()) {
            generateContentDescription()
            generateContentDescription()
            setIcons(builder, iconsContainer)
            setIcons(builder, iconsContainer)
            text.visibility = if (builder.types.size == 1) VISIBLE else GONE
            text.visibility = if (builder.types.size == 1 && expanded) VISIBLE else GONE
            if (builder.types.size == 1) {
            if (builder.types.size == 1 && expanded) {
                if (builder.app != null) {
                if (builder.app != null) {
                    text.setText(builder.app?.applicationName)
                    text.setText(builder.app?.applicationName)
                } else {
                } else {
Loading