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

Commit 617d0519 authored by Winson Chung's avatar Winson Chung Committed by Automerger Merge Worker
Browse files

Merge "Alternative workaround for using private attribute" into sc-dev am: 64985359

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14216601

Change-Id: I7681f48453d6684b9672754f165fc3961d19d21d
parents 1b37b94b 64985359
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
*/
-->

<resources xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
<resources>
    <!-- Keyguard PIN pad styles -->
    <style name="Keyguard.TextView" parent="@android:style/Widget.DeviceDefault.TextView">
        <item name="android:textSize">@dimen/kg_status_line_font_size</item>
@@ -32,7 +32,9 @@
        <item name="android:stateListAnimator">@null</item>
    </style>
    <style name="NumPadKey" parent="Theme.SystemUI">
      <item name="android:colorControlNormal">?androidprv:attr/colorSurface</item>
      <!-- Studio can't directly reference ?androidprv:attr/colorSurface here, so this value
           is resolved in {@link NumPadAnimator}. -->
      <item name="android:colorControlNormal">@null</item>
      <item name="android:colorControlHighlight">?android:attr/colorAccent</item>
      <item name="android:background">@drawable/num_pad_key_background</item>
    </style>
+3 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import androidx.annotation.StyleRes;

import com.android.systemui.R;
import com.android.systemui.animation.Interpolators;
import com.android.systemui.util.Utils;

/**
 * Provides background color and radius animations for key pad buttons.
@@ -100,7 +101,8 @@ class NumPadAnimator {

        ContextThemeWrapper ctw = new ContextThemeWrapper(context, mStyle);
        TypedArray a = ctw.obtainStyledAttributes(customAttrs);
        mNormalColor = a.getColor(0, 0);
        mNormalColor = Utils.getPrivateAttrColorIfUnset(ctw, a, 0, 0,
                com.android.internal.R.attr.colorSurface);
        mHighlightColor = a.getColor(1, 0);
        a.recycle();

+21 −0
Original line number Diff line number Diff line
@@ -21,8 +21,10 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.provider.Settings;
import android.text.TextUtils;
import android.view.ContextThemeWrapper;
import android.view.View;

import com.android.systemui.R;
@@ -177,4 +179,23 @@ public class Utils {
                && resources.getBoolean(R.bool.config_use_split_notification_shade);
    }

    /**
     * Returns the color provided at the specified {@param attrIndex} in {@param a} if it exists,
     * otherwise, returns the color from the private attribute {@param privAttrId}.
     */
    public static int getPrivateAttrColorIfUnset(ContextThemeWrapper ctw, TypedArray a,
            int attrIndex, int defColor, int privAttrId) {
        // If the index is specified, use that value
        if (a.hasValue(attrIndex)) {
            return a.getColor(attrIndex, defColor);
        }

        // Otherwise fallback to the value of the private attribute
        int[] customAttrs = { privAttrId };
        a = ctw.obtainStyledAttributes(customAttrs);
        int color = a.getColor(0, defColor);
        a.recycle();
        return color;
    }

}