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

Commit 216812e9 authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Change Chip between QS and QQS

Chip animates via fade out and fade in. No redlines for margins and
padding.

Test: manual

Change-Id: I10f024eb06f88b6493687febdbb0d5ccbba450b8
parent a4d54848
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <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" />
</shape>
 No newline at end of file
+15 −4
Original line number Diff line number Diff line
@@ -29,14 +29,25 @@
    android:orientation="horizontal"
    android:paddingStart="@dimen/ongoing_appops_chip_side_padding"
    android:paddingEnd="@dimen/ongoing_appops_chip_side_padding"
    android:background="@drawable/privacy_chip_bg"
    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
            android:id="@+id/icons_container"
            android:layout_height="match_parent"
            android:layout_width="wrap_content"
            android:layout_gravity="center_vertical|start"
            android:layout_gravity="center_vertical"
            android:gravity="center_vertical"
            />

@@ -51,7 +62,7 @@
            android:gravity="center_vertical"
            android:textAppearance="@style/TextAppearance.StatusBar.Clock"
            android:textColor="@color/status_bar_clock_color"
            android:layout_marginStart="@dimen/ongoing_appops_chip_icon_margin"
            android:layout_marginEnd="@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_collapsed"
        />
</com.android.systemui.privacy.OngoingPrivacyChip>
 No newline at end of file
+6 −4
Original line number Diff line number Diff line
@@ -967,7 +967,7 @@
    <!-- Height and width of App Opp icons in Ongoing App Ops dialog -->
    <dimen name="ongoing_appops_dialog_icon_size">24dp</dimen>
    <!-- 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 -->
    <dimen name="ongoing_appops_dialog_app_icon_size">32dp</dimen>
    <!-- Height and width of Plus sign in Ongoing App Ops dialog -->
@@ -988,12 +988,14 @@
    <dimen name="ongoing_appops_chip_side_padding">6dp</dimen>
    <!-- Padding between background of Ongoing App Ops chip and content -->
    <dimen name="ongoing_appops_chip_bg_padding">0dp</dimen>
    <!-- Margin between icons of Ongoing App Ops chip -->
    <dimen name="ongoing_appops_chip_icon_margin">4dp</dimen>
    <!-- Margin between icons of Ongoing App Ops chip when QQS-->
    <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 -->
    <dimen name="ongoing_appops_chip_icon_size">18dp</dimen>
    <!-- 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 -->
    <dimen name="ongoing_appops_dialog_title_size">20sp</dimen>
    <!-- Text size for Ongoing App Ops dialog items -->
+3 −0
Original line number Diff line number Diff line
@@ -2301,6 +2301,9 @@
    <!-- 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>

    <!-- 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]-->
    <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>
+26 −9
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ package com.android.systemui.privacy

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

    private val iconMargin =
            context.resources.getDimensionPixelSize(R.dimen.ongoing_appops_chip_icon_margin)
    private val iconMarginExpanded = context.resources.getDimensionPixelSize(
                    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 =
            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)
    private val backgroundDrawable = context.getDrawable(R.drawable.privacy_chip_bg)
    private lateinit var text: TextView
    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 privacyList = emptyList<PrivacyItem>()
        set(value) {
@@ -48,15 +60,18 @@ class OngoingPrivacyChip @JvmOverloads constructor(
    override fun onFinishInflate() {
        super.onFinishInflate()

        inUseText = findViewById(R.id.in_use_text)
        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() {
        inUseText.visibility = if (expanded) View.GONE else View.VISIBLE
        background = if (expanded) backgroundDrawable else null
        fun setIcons(dialogBuilder: PrivacyDialogBuilder, iconsContainer: ViewGroup) {
            iconsContainer.removeAllViews()
            dialogBuilder.generateIcons().forEach {
            dialogBuilder.generateIcons().forEachIndexed { i, it ->
                it.mutate()
                it.setTint(iconColor)
                val image = ImageView(context).apply {
@@ -64,17 +79,19 @@ class OngoingPrivacyChip @JvmOverloads constructor(
                    scaleType = ImageView.ScaleType.CENTER_INSIDE
                }
                iconsContainer.addView(image, iconSize, iconSize)
                if (i != 0) {
                    val lp = image.layoutParams as MarginLayoutParams
                lp.marginStart = iconMargin
                    lp.marginStart = if (expanded) iconMarginExpanded else iconMarginCollapsed
                    image.layoutParams = lp
                }
            }
        }

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