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

Commit 40033338 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Visual changes in OngoingPrivacyChip"

parents 97640451 c69b4028
Loading
Loading
Loading
Loading
+3 −20
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@
    android:orientation="horizontal"
    android:focusable="true">

        <LinearLayout
        <FrameLayout
            android:id="@+id/background"
            android:layout_height="@dimen/ongoing_appops_chip_height"
            android:layout_width="wrap_content"
@@ -37,25 +37,8 @@
                    android:id="@+id/icons_container"
                    android:layout_height="match_parent"
                    android:layout_width="wrap_content"
                    android:layout_marginStart="@dimen/ongoing_appops_chip_items_margin"
                    android:layout_gravity="center_vertical"
                    android:gravity="center_vertical"
                    />

                <TextView
                    android:id="@+id/text_container"
                    android:layout_height="match_parent"
                    android:layout_width="wrap_content"
                    android:layout_gravity="center_vertical|end"
                    android:paddingStart="@dimen/ongoing_appops_chip_text_padding"
                    android:paddingEnd="@dimen/ongoing_appops_chip_text_padding"
                    android:layout_gravity="center"
                    android:gravity="center_vertical"
                    android:singleLine="true"
                    android:ellipsize="end"
                    android:lines="1"
                    android:textAppearance="@style/TextAppearance.StatusBar.Clock"
                    android:textSize="@dimen/ongoing_appops_chip_text_size"
                    android:textColor="@color/status_bar_clock_color"
                    />
          </LinearLayout>
          </FrameLayout>
</com.android.systemui.privacy.OngoingPrivacyChip>
 No newline at end of file
+2 −7
Original line number Diff line number Diff line
@@ -1003,10 +1003,8 @@
    <dimen name="ongoing_appops_chip_margin">0dp</dimen>
    <!-- Height of the Ongoing App Ops chip -->
    <dimen name="ongoing_appops_chip_height">32dp</dimen>
    <!-- Start and End padding for Ongoing App Ops chip -->
    <dimen name="ongoing_appops_chip_text_padding">8dp</dimen>
    <!-- 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">8dp</dimen>
    <!-- Side padding between background of Ongoing App Ops chip and content -->
    <dimen name="ongoing_appops_chip_side_padding">8dp</dimen>
    <!-- Margin between icons of Ongoing App Ops chip when QQS-->
@@ -1017,10 +1015,7 @@
    <dimen name="ongoing_appops_chip_icon_size">@*android:dimen/status_bar_icon_size</dimen>
    <!-- Radius of Ongoing App Ops chip corners -->
    <dimen name="ongoing_appops_chip_bg_corner_radius">16dp</dimen>
    <!-- Size of text of Ongoing App Ops chip -->
    <dimen name="ongoing_appops_chip_text_size">12sp</dimen>
    <!-- Margin between items in Ongoing App Ops chip -->
    <dimen name="ongoing_appops_chip_items_margin">8dp</dimen>


    <!-- How much a bubble is elevated -->
    <dimen name="bubble_elevation">8dp</dimen>
+0 −14
Original line number Diff line number Diff line
@@ -2320,26 +2320,12 @@
         app for debugging. Will not be seen by users. [CHAR LIMIT=20] -->
    <string name="heap_dump_tile_name">Dump SysUI Heap</string>

    <!-- Text on chip for multiple apps using a single app op [CHAR LIMIT=12] -->
    <plurals name="ongoing_privacy_chip_multiple_apps">
        <item quantity="one"><xliff:g id="num_apps" example="1">%d</xliff:g> app</item>
        <item quantity="few"><xliff:g id="num_apps" example="3">%d</xliff:g> apps</item>
        <item quantity="other"><xliff:g id="num_apps" example="3">%d</xliff:g> apps</item>
    </plurals>

    <!-- Content description for ongoing privacy chip. Use with a single app [CHAR LIMIT=NONE]-->
    <string name="ongoing_privacy_chip_content_single_app"><xliff:g id="app" example="Example App">%1$s</xliff:g> is using your <xliff:g id="types_list" example="camera, location">%2$s</xliff:g>.</string>

    <!-- 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>

    <!-- 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">
        <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="few"><xliff:g id="num_apps" example="3">%1$d</xliff:g> applications are using your <xliff:g id="type" example="camera">%2$s</xliff:g>.</item>
        <item quantity="other"><xliff:g id="num_apps" example="3">%1$d</xliff:g> applications are using your <xliff:g id="type" example="camera">%2$s</xliff:g>.</item>
    </plurals>

    <!-- Action for accepting the Ongoing privacy dialog [CHAR LIMIT=10]-->
    <string name="ongoing_privacy_dialog_ok">Got it</string>

+6 −34
Original line number Diff line number Diff line
@@ -17,9 +17,9 @@ package com.android.systemui.privacy
import android.content.Context
import android.util.AttributeSet
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import com.android.systemui.Dependency
import com.android.systemui.R
import com.android.systemui.statusbar.policy.KeyguardMonitor
@@ -42,9 +42,8 @@ class OngoingPrivacyChip @JvmOverloads constructor(
    private val sidePadding =
            context.resources.getDimensionPixelSize(R.dimen.ongoing_appops_chip_side_padding)
    private val backgroundDrawable = context.getDrawable(R.drawable.privacy_chip_bg)
    private lateinit var text: TextView
    private lateinit var iconsContainer: LinearLayout
    private lateinit var back: LinearLayout
    private lateinit var back: FrameLayout
    var expanded = false
        set(value) {
            if (value != field) {
@@ -66,14 +65,14 @@ class OngoingPrivacyChip @JvmOverloads constructor(
        super.onFinishInflate()

        back = findViewById(R.id.background)
        text = findViewById(R.id.text_container)
        iconsContainer = findViewById(R.id.icons_container)
    }

    // Should only be called if the builder icons or app changed
    private fun updateView() {
        back.background = if (expanded) backgroundDrawable else null
        back.setPaddingRelative(0, 0, if (expanded) sidePadding else 0, 0)
        val padding = if (expanded) sidePadding else 0
        back.setPaddingRelative(padding, 0, padding, 0)
        fun setIcons(dialogBuilder: PrivacyDialogBuilder, iconsContainer: ViewGroup) {
            iconsContainer.removeAllViews()
            dialogBuilder.generateIcons().forEachIndexed { i, it ->
@@ -95,44 +94,17 @@ class OngoingPrivacyChip @JvmOverloads constructor(
        if (!privacyList.isEmpty()) {
            generateContentDescription()
            setIcons(builder, iconsContainer)
            setApplicationText()
        } else {
            text.visibility = GONE
            iconsContainer.removeAllViews()
        }
        requestLayout()
    }

    private fun setApplicationText() {
        text.visibility = if (builder.types.size == 1 && expanded) VISIBLE else GONE
        if (builder.types.size == 1 && expanded) {
            if (builder.app != null && !amISecure()) {
                text.setText(builder.app?.applicationName)
            } else {
                text.text = context.resources.getQuantityString(
                        R.plurals.ongoing_privacy_chip_multiple_apps,
                        builder.appsAndTypes.size, builder.appsAndTypes.size)
            }
        }
    }

    private fun amISecure() = keyguardMonitor.isShowing && keyguardMonitor.isSecure

    private fun generateContentDescription() {
        val typesText = builder.joinTypes()
        if (builder.types.size > 1) {
        contentDescription = context.getString(
                R.string.ongoing_privacy_chip_content_multiple_apps, typesText)
        } else {
            if (builder.app != null && !amISecure()) {
                contentDescription =
                        context.getString(R.string.ongoing_privacy_chip_content_single_app,
                                builder.app?.applicationName, typesText)
            } else {
                contentDescription = context.resources.getQuantityString(
                        R.plurals.ongoing_privacy_chip_content_multiple_apps_single_op,
                        builder.appsAndTypes.size, builder.appsAndTypes.size, typesText)
            }
        }
    }
}
 No newline at end of file
+1 −8
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ class PrivacyDialogBuilder(private val context: Context, itemsList: List<Privacy

    val appsAndTypes: List<Pair<PrivacyApplication, List<PrivacyType>>>
    val types: List<PrivacyType>
    val app: PrivacyApplication?
    private val separator = context.getString(R.string.ongoing_privacy_dialog_separator)
    private val lastSeparator = context.getString(R.string.ongoing_privacy_dialog_last_separator)

@@ -32,8 +31,6 @@ class PrivacyDialogBuilder(private val context: Context, itemsList: List<Privacy
                .sortedWith(compareBy({ -it.second.size }, // Sort by number of AppOps
                        { it.second.min() })) // Sort by "smallest" AppOpp (Location is largest)
        types = itemsList.map { it.privacyType }.distinct().sorted()
        val singleApp = appsAndTypes.size == 1
        app = if (singleApp) appsAndTypes[0].first else null
    }

    fun generateIconsForApp(types: List<PrivacyType>): List<Drawable> {
@@ -58,11 +55,7 @@ class PrivacyDialogBuilder(private val context: Context, itemsList: List<Privacy
    }

    fun getDialogTitle(): String {
        if (app != null) {
            return context.getString(R.string.ongoing_privacy_dialog_single_app_title, joinTypes())
        } else {
        return context.getString(R.string.ongoing_privacy_dialog_multiple_apps_title,
                    joinTypes())
    }
}
}