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

Commit 8f3660e0 authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Makes chip private.

Chip only shows names of apps on Keyguard if device is not secure.

Keyguard needs to be dismissed to show dialog.

Test: manual
Change-Id: I9b96f9573ee31cfa3ea77119d439610a036135c8
Fixes: 123882836
parent 76894652
Loading
Loading
Loading
Loading
+21 −11
Original line number Diff line number Diff line
@@ -21,7 +21,9 @@ import android.view.ViewGroup
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

class OngoingPrivacyChip @JvmOverloads constructor(
    context: Context,
@@ -49,6 +51,8 @@ class OngoingPrivacyChip @JvmOverloads constructor(
                updateView()
            }
        }
    @Suppress("DEPRECATION")
    private val keyguardMonitor = Dependency.get(KeyguardMonitor::class.java)
    var builder = PrivacyDialogBuilder(context, emptyList<PrivacyItem>())
    var privacyList = emptyList<PrivacyItem>()
        set(value) {
@@ -90,9 +94,18 @@ 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) {
            if (builder.app != null && !amISecure()) {
                text.setText(builder.app?.applicationName)
            } else {
                text.text = context.resources.getQuantityString(
@@ -100,20 +113,17 @@ class OngoingPrivacyChip @JvmOverloads constructor(
                        builder.appsAndTypes.size, builder.appsAndTypes.size)
            }
        }
        } else {
            text.visibility = GONE
            iconsContainer.removeAllViews()
        }
        requestLayout()
    }

    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) {
            if (builder.app != null && !amISecure()) {
                contentDescription =
                        context.getString(R.string.ongoing_privacy_chip_content_single_app,
                                builder.app?.applicationName, typesText)
+2 −5
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ import android.util.Pair;
import android.view.DisplayCutout;
import android.view.View;
import android.view.WindowInsets;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -553,12 +552,10 @@ public class QuickStatusBarHeader extends RelativeLayout implements
            Handler mUiHandler = new Handler(Looper.getMainLooper());
            mUiHandler.post(() -> {
                Dialog mDialog = new OngoingPrivacyDialog(mContext, builder).createDialog();
                mDialog.getWindow().setType(
                        WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
                SystemUIDialog.setShowForAllUsers(mDialog, true);
                SystemUIDialog.setShowForAllUsers(mDialog, false);
                SystemUIDialog.registerDismissListener(mDialog);
                SystemUIDialog.setWindowOnTop(mDialog);
                mUiHandler.post(() -> mDialog.show());
                mActivityStarter.postQSRunnableDismissingKeyguard(() -> mDialog.show());
                mHost.collapsePanels();
            });
        }