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

Commit d7e2194d authored by Jeff DeCew's avatar Jeff DeCew Committed by Android (Google) Code Review
Browse files

Merge "Fix all RemoteInputView colors when isColorized changes." into sc-dev

parents bda154d5 e7f018d1
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -873,14 +873,19 @@ public class NotificationContentView extends FrameLayout {
    }

    public void setBackgroundTintColor(int color) {
        if (mExpandedSmartReplyView != null) {
        boolean colorized = mNotificationEntry.getSbn().getNotification().isColorized();
        if (mExpandedSmartReplyView != null) {
            mExpandedSmartReplyView.setBackgroundTintColor(color, colorized);
        }
        if (mHeadsUpSmartReplyView != null) {
            boolean colorized = mNotificationEntry.getSbn().getNotification().isColorized();
            mHeadsUpSmartReplyView.setBackgroundTintColor(color, colorized);
        }
        if (mExpandedRemoteInput != null) {
            mExpandedRemoteInput.setBackgroundTintColor(color, colorized);
        }
        if (mHeadsUpRemoteInput != null) {
            mHeadsUpRemoteInput.setBackgroundTintColor(color, colorized);
        }
    }

    public int getVisibleType() {
@@ -1243,8 +1248,7 @@ public class NotificationContentView extends FrameLayout {
        View actionContainerCandidate = view.findViewById(
                com.android.internal.R.id.actions_container);
        if (actionContainerCandidate instanceof FrameLayout) {
            RemoteInputView existing = (RemoteInputView)
                    view.findViewWithTag(RemoteInputView.VIEW_TAG);
            RemoteInputView existing = view.findViewWithTag(RemoteInputView.VIEW_TAG);

            if (existing != null) {
                existing.onNotificationUpdateOrReset();
@@ -1292,13 +1296,9 @@ public class NotificationContentView extends FrameLayout {
                }
            }
            if (existing != null) {
                if (entry.getSbn().getNotification().isColorized()) {
                    existing.setBackgroundTintColor(
                            entry.getSbn().getNotification().color, true);
                } else {
                    existing.setBackgroundTintColor(
                            entry.getRow().getCurrentBackgroundTint(), false);
                }
                int backgroundColor = entry.getRow().getCurrentBackgroundTint();
                boolean colorized = mNotificationEntry.getSbn().getNotification().isColorized();
                existing.setBackgroundTintColor(backgroundColor, colorized);
            }
            return existing;
        }
+46 −57
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.content.pm.ShortcutManager;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
@@ -157,52 +158,48 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
    /**
     * The remote view needs to adapt to colorized notifications when set
     * It overrides the background of itself as well as all of its childern
     * @param color colorized notification color
     * @param backgroundColor colorized notification color
     */
    public void setBackgroundTintColor(int color, boolean colorized) {
        if (colorized == mColorized && color == mTint) return;
    public void setBackgroundTintColor(final int backgroundColor, boolean colorized) {
        if (colorized == mColorized && backgroundColor == mTint) return;
        mColorized = colorized;
        mTint = color;
        final int[][] states = new int[][]{
                new int[]{com.android.internal.R.attr.state_enabled},
                new int[]{},
        };
        final int[] colors;
        mTint = backgroundColor;
        final int editBgColor;
        final int accentColor;
        final int textColor;
        final int hintTextColor;
        if (colorized) {
            final boolean dark = !ContrastColorUtil.isColorLight(color);
            final int finalColor = dark
                    ? Color.WHITE
                    : Color.BLACK;
            colors = new int[]{
                    finalColor,
                    finalColor & 0x4DFFFFFF // %30 opacity
            };
            mEditText.setUniformBackgroundTintColor(color);
            mEditText.setUniformForegroundColor(finalColor);

            final boolean dark = !ContrastColorUtil.isColorLight(backgroundColor);
            final int foregroundColor = dark ? Color.WHITE : Color.BLACK;
            editBgColor = backgroundColor;
            accentColor = foregroundColor;
            textColor = foregroundColor;
            hintTextColor = ColorUtils.setAlphaComponent(foregroundColor, 0x99);
        } else {
            mEditText.setTextColor(mContext.getColor(R.color.remote_input_text));
            mEditText.setHintTextColor(mContext.getColorStateList(R.color.remote_input_hint));
            TypedArray ta = getContext().getTheme().obtainStyledAttributes(new int[]{
            textColor = mContext.getColor(R.color.remote_input_text);
            hintTextColor = mContext.getColor(R.color.remote_input_hint);
            try (TypedArray ta = getContext().getTheme().obtainStyledAttributes(new int[]{
                    com.android.internal.R.attr.colorAccent,
                    com.android.internal.R.attr.colorBackgroundFloating,
            });
            int colorAccent = ta.getColor(0, 0);
            int colorBackgroundFloating = ta.getColor(1, 0);
            ta.recycle();
            mEditText.setTextBackgroundColors(colorAccent, colorBackgroundFloating);
            colors = new int[]{
                    colorAccent,
                    colorBackgroundFloating & 0x4DFFFFFF // %30 opacity
            };
            })) {
                accentColor = ta.getColor(0, textColor);
                editBgColor = ta.getColor(1, backgroundColor);
            }
        mEditText.setBackgroundColor(color);
        final ColorStateList  tint = new ColorStateList(states, colors);
        mSendButton.setImageTintList(tint);
        mProgressBar.setProgressTintList(tint);
        mProgressBar.setIndeterminateTintList(tint);
        mProgressBar.setSecondaryProgressTintList(tint);
        setBackgroundColor(color);
        }
        mEditText.setAllColors(backgroundColor, editBgColor,
                accentColor, textColor, hintTextColor);
        final ColorStateList accentTint = new ColorStateList(new int[][]{
                new int[]{com.android.internal.R.attr.state_enabled},
                new int[]{},
        }, new int[]{
                accentColor,
                accentColor & 0x4DFFFFFF // %30 opacity
        });
        mSendButton.setImageTintList(accentTint);
        mProgressBar.setProgressTintList(accentTint);
        mProgressBar.setIndeterminateTintList(accentTint);
        mProgressBar.setSecondaryProgressTintList(accentTint);
        setBackgroundColor(backgroundColor);
    }

    @Override
@@ -796,20 +793,6 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
            }
        }

        protected void setUniformBackgroundTintColor(int color) {
            mBackgroundColor.setColor(color);
            mTextBackground.setColor(color);
        }

        protected void setUniformForegroundColor(int color) {
            int stroke = getContext().getResources()
                    .getDimensionPixelSize(R.dimen.remote_input_view_text_stroke);
            mTextBackground.setStroke(stroke, color);
            setTextColor(color);
            setHintTextColor(ColorUtils.setAlphaComponent(color, 0x99));
            setTextCursorDrawable(null);
        }

        @Override
        public void getFocusedRect(Rect r) {
            super.getFocusedRect(r);
@@ -938,11 +921,17 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
            return remainingItems;
        }

        protected void setTextBackgroundColors(int strokeColor, int textBackground) {
            mTextBackground.setColor(textBackground);
        protected void setAllColors(int backgroundColor, int editBackgroundColor,
                int accentColor, int textColor, int hintTextColor) {
            setBackgroundColor(backgroundColor);
            mBackgroundColor.setColor(backgroundColor);
            mTextBackground.setColor(editBackgroundColor);
            int stroke = getContext().getResources()
                    .getDimensionPixelSize(R.dimen.remote_input_view_text_stroke);
            mTextBackground.setStroke(stroke, strokeColor);
            mTextBackground.setStroke(stroke, accentColor);
            setTextColor(textColor);
            setHintTextColor(hintTextColor);
            getTextCursorDrawable().setColorFilter(accentColor, PorterDuff.Mode.SRC_IN);
        }
    }
}