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

Commit f975ab3b authored by Sanry Huang's avatar Sanry Huang Committed by android-build-merger
Browse files

Merge "Fix odd avatar when message sender is a number" into pi-dev

am: cd5ca7e6

Change-Id: Iba352138169c6c916662230e14de62f2d8f77a87
parents fb9ecfc8 cd5ca7e6
Loading
Loading
Loading
Loading
+23 −12
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ import com.android.internal.util.NotificationColorUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.regex.Pattern;

/**
 * A custom-built layout for the Notification.MessagingStyle allows dynamic addition and removal
@@ -59,6 +60,8 @@ import java.util.function.Consumer;
public class MessagingLayout extends FrameLayout {

    private static final float COLOR_SHIFT_AMOUNT = 60;
    private static final Pattern SPECIAL_CHAR_PATTERN
            = Pattern.compile ("[!@#$%&*()_+=|<>?{}\\[\\]~-]");
    private static final Consumer<MessagingMessage> REMOVE_MESSAGE
            = MessagingMessage::removeMessage;
    public static final Interpolator LINEAR_OUT_SLOW_IN = new PathInterpolator(0f, 0f, 0.2f, 1f);
@@ -259,6 +262,13 @@ public class MessagingLayout extends FrameLayout {
    }

    public Icon createAvatarSymbol(CharSequence senderName, String symbol, int layoutColor) {
        if (symbol.isEmpty() || TextUtils.isDigitsOnly(symbol) ||
                SPECIAL_CHAR_PATTERN.matcher(symbol).find()) {
            Icon avatarIcon = Icon.createWithResource(getContext(),
                    com.android.internal.R.drawable.messaging_user);
            avatarIcon.setTint(findColor(senderName, layoutColor));
            return avatarIcon;
        } else {
            Bitmap bitmap = Bitmap.createBitmap(mAvatarSize, mAvatarSize, Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            float radius = mAvatarSize / 2.0f;
@@ -272,6 +282,7 @@ public class MessagingLayout extends FrameLayout {
            canvas.drawText(symbol, radius, yPos, mTextPaint);
            return Icon.createWithBitmap(bitmap);
        }
    }

    private int findColor(CharSequence senderName, int layoutColor) {
        double luminance = NotificationColorUtil.calculateLuminance(layoutColor);