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

Commit 22aaa565 authored by Ioana Alexandru's avatar Ioana Alexandru Committed by Android (Google) Code Review
Browse files

Merge "Fix the summarization font" into main

parents 96854f0f 5a875187
Loading
Loading
Loading
Loading
+37 −15
Original line number Diff line number Diff line
@@ -173,6 +173,8 @@ public class ConversationLayout extends FrameLayout
    private ConversationHeaderData mConversationHeaderData;
    private int mSpacingForExpander;
    private int mSpacingForImage;
    private LinearLayout mConversationContentView;
    private int mSummarizationStartMargin;

    public ConversationLayout(@NonNull Context context) {
        super(context);
@@ -337,6 +339,10 @@ public class ConversationLayout extends FrameLayout
        mAppName.setOnVisibilityChangedListener((visibility) -> {
            onAppNameVisibilityChanged();
        });

        mConversationContentView = findViewById(R.id.notification_main_column);
        mSummarizationStartMargin = getResources().getDimensionPixelSize(
                R.dimen.notification_2025_content_margin_start_summarization);
    }

    @RemotableViewMethod
@@ -435,19 +441,7 @@ public class ConversationLayout extends FrameLayout
    @RemotableViewMethod(asyncImpl = "setIsCollapsedAsync")
    public void setIsCollapsed(boolean isCollapsed) {
        mIsCollapsed = isCollapsed;
        int maxLines = Integer.MAX_VALUE;
        if (isCollapsed) {
            if (!TextUtils.isEmpty(mSummarizedContent)) {
                maxLines = MAX_SUMMARIZATION_LINES;
            } else {
                if (android.app.Flags.nmCollapsedLines()) {
                    maxLines = 2;
                } else {
                    maxLines = 1;
                }
            }
        }
        mMessagingLinearLayout.setMaxDisplayedLines(maxLines);

        updateExpandButton();
        updateContentEndPaddings();
    }
@@ -496,7 +490,7 @@ public class ConversationLayout extends FrameLayout

        List<MessagingMessage> newMessagingMessages;
        mSummarizedContent = extras.getCharSequence(Notification.EXTRA_SUMMARIZED_CONTENT);
        if (!TextUtils.isEmpty(mSummarizedContent) && mIsCollapsed) {
        if (isShowingSummarization()) {
            Notification.MessagingStyle.Message summary =
                    new Notification.MessagingStyle.Message(mSummarizedContent, 0, "");
            newMessagingMessages =
@@ -605,6 +599,8 @@ public class ConversationLayout extends FrameLayout
        setUser(messagingData.getUser());
        setUnreadCount(messagingData.getUnreadCount());

        updateViewsForSummarization();

        // Copy our groups, before they get clobbered
        ArrayList<MessagingGroup> oldGroups = new ArrayList<>(mGroups);

@@ -1101,6 +1097,10 @@ public class ConversationLayout extends FrameLayout
        return mConversationText.getText();
    }

    private boolean isShowingSummarization() {
        return !TextUtils.isEmpty(mSummarizedContent) && mIsCollapsed;
    }

    private void removeGroups(ArrayList<MessagingGroup> oldGroups) {
        int size = oldGroups.size();
        for (int i = 0; i < size; i++) {
@@ -1288,7 +1288,7 @@ public class ConversationLayout extends FrameLayout
                mMessagingLinearLayout.removeView(newGroup);
                mMessagingLinearLayout.addView(newGroup, groupIndex);
            }
            newGroup.setMessages(group);
            newGroup.setMessages(group, isShowingSummarization());
        }

        if (Flags.dropNonExistingMessages()) {
@@ -1756,6 +1756,28 @@ public class ConversationLayout extends FrameLayout
        updateContentEndPaddings();
    }

    private void updateViewsForSummarization() {
        int maxLines = Integer.MAX_VALUE;
        if (isShowingSummarization()) {
            maxLines = MAX_SUMMARIZATION_LINES;
        } else if (mIsCollapsed) {
            if (android.app.Flags.nmCollapsedLines()) {
                maxLines = 2;
            } else {
                maxLines = 1;
            }
        }
        mMessagingLinearLayout.setMaxDisplayedLines(maxLines);
        if (isShowingSummarization()) {
            ViewGroup.LayoutParams lp = mConversationContentView.getLayoutParams();
            if (lp != null && lp instanceof MarginLayoutParams) {
                final MarginLayoutParams mlp = (MarginLayoutParams) lp;
                mlp.setMarginStart(mSummarizationStartMargin);
                // this happens before layout, so we don't need to explicitly ask for one
            }
        }
    }

    @Override
    public void setMessagingClippingDisabled(boolean clippingDisabled) {
        mMessagingLinearLayout.setClipBounds(clippingDisabled ? null : mMessagingClipRect);
+2 −1
Original line number Diff line number Diff line
@@ -528,12 +528,13 @@ public class MessagingGroup extends NotificationOptimizedLinearLayout implements
        }
    }

    public void setMessages(List<MessagingMessage> group) {
    public void setMessages(List<MessagingMessage> group, boolean showingSummarization) {
        // Let's now make sure all children are added and in the correct order
        int textMessageIndex = 0;
        MessagingImageMessage isolatedMessage = null;
        for (int messageIndex = 0; messageIndex < group.size(); messageIndex++) {
            MessagingMessage message = group.get(messageIndex);
            message.updateViewForSummarization(showingSummarization);
            if (message.getGroup() != this) {
                message.setMessagingGroup(this);
                mAddedMessages.add(message);
+37 −7
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import android.view.animation.Interpolator;
import android.view.animation.PathInterpolator;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RemoteViews;
import android.widget.flags.Flags;

@@ -97,6 +98,8 @@ public class MessagingLayout extends FrameLayout
    private CharSequence mSummarizedContent;
    private int mSpacingForExpander;
    private int mSpacingForImage;
    private LinearLayout mMessageContentView;
    private int mSummarizationStartMargin;

    public MessagingLayout(@NonNull Context context) {
        super(context);
@@ -156,6 +159,10 @@ public class MessagingLayout extends FrameLayout
        int size = Math.max(displayMetrics.widthPixels, displayMetrics.heightPixels);
        mMessagingClipRect = new Rect(0, 0, size, size);
        setMessagingClippingDisabled(false);

        mMessageContentView = findViewById(R.id.notification_main_column);
        mSummarizationStartMargin = getResources().getDimensionPixelSize(
                R.dimen.notification_2025_content_margin_start_summarization);
    }

    @RemotableViewMethod(asyncImpl = "setAvatarReplacementAsync")
@@ -192,10 +199,6 @@ public class MessagingLayout extends FrameLayout
    @RemotableViewMethod(asyncImpl = "setIsCollapsedAsync")
    public void setIsCollapsed(boolean isCollapsed) {
        mIsCollapsed = isCollapsed;
        if (mIsCollapsed) {
            mMessagingLinearLayout.setMaxDisplayedLines(
                    android.app.Flags.nmCollapsedLines() ? 2 : 1);
        }
    }

    /**
@@ -263,8 +266,7 @@ public class MessagingLayout extends FrameLayout
                /* isHistoric= */true, usePrecomputedText, false);
        List<MessagingMessage> newMessagingMessages;
        mSummarizedContent = extras.getCharSequence(Notification.EXTRA_SUMMARIZED_CONTENT);
        if (!TextUtils.isEmpty(mSummarizedContent) && mIsCollapsed) {
            mMessagingLinearLayout.setMaxDisplayedLines(MAX_SUMMARIZATION_LINES);
        if (isShowingSummarization()) {
            Notification.MessagingStyle.Message summary =
                    new Notification.MessagingStyle.Message(mSummarizedContent, 0, "");
            newMessagingMessages =
@@ -346,9 +348,37 @@ public class MessagingLayout extends FrameLayout
        }
    }

    private void updateViewsForSummarization() {
        int maxLines = Integer.MAX_VALUE;
        if (isShowingSummarization()) {
            maxLines = MAX_SUMMARIZATION_LINES;
        } else if (mIsCollapsed) {
            if (android.app.Flags.nmCollapsedLines()) {
                maxLines = 2;
            } else {
                maxLines = 1;
            }
        }
        mMessagingLinearLayout.setMaxDisplayedLines(maxLines);
        if (isShowingSummarization()) {
            ViewGroup.LayoutParams lp = mMessageContentView.getLayoutParams();
            if (lp != null && lp instanceof MarginLayoutParams) {
                final MarginLayoutParams mlp = (MarginLayoutParams) lp;
                mlp.setMarginStart(mSummarizationStartMargin);
                // this happens before layout, so we don't need to explicitly ask for one
            }
        }
    }

    private boolean isShowingSummarization() {
        return !TextUtils.isEmpty(mSummarizedContent) && mIsCollapsed;
    }

    private void bind(MessagingData messagingData) {
        setUser(messagingData.getUser());

        updateViewsForSummarization();

        // Let's now create the views and reorder them accordingly
        ArrayList<MessagingGroup> oldGroups = new ArrayList<>(mGroups);
        createGroupViews(messagingData.getGroups(), messagingData.getSenders(),
@@ -652,7 +682,7 @@ public class MessagingLayout extends FrameLayout
                mMessagingLinearLayout.removeView(newGroup);
                mMessagingLinearLayout.addView(newGroup, groupIndex);
            }
            newGroup.setMessages(group);
            newGroup.setMessages(group, isShowingSummarization());
        }

        if (Flags.dropNonExistingMessages()) {
+2 −0
Original line number Diff line number Diff line
@@ -163,6 +163,8 @@ public interface MessagingMessage extends MessagingLinearLayout.MessagingChild {

    int getVisibility();

    default void updateViewForSummarization(boolean summarizationShowing) {}

    /**
     * Finalize inflation of the MessagingMessages, which should be called on Main Thread.
     * @hide
+19 −3
Original line number Diff line number Diff line
@@ -92,9 +92,6 @@ public class MessagingTextMessage extends ImageFloatingTextView implements Messa
                    R.layout.notification_template_messaging_text_message,
                    messagingLinearLayout,
                    false);
            if (useItalics) {
                createdMessage.setTypeface(Typeface.DEFAULT, Typeface.ITALIC);
            }
            createdMessage.addOnLayoutChangeListener(MessagingLayout.MESSAGING_PROPERTY_ANIMATOR);
        }
        createdMessage.setMessage(m, usePrecomputedText);
@@ -152,6 +149,25 @@ public class MessagingTextMessage extends ImageFloatingTextView implements Messa
        setTextColor(color);
    }

    @Override
    public void updateViewForSummarization(boolean summarizationShowing) {
        if (summarizationShowing) {
            // Summarization text is italic, so we have to add space for it or characters like 'j'
            // will be cut off
            setPaddingRelative(mContext.getResources().getDimensionPixelSize(
                            R.dimen.notification_text_message_start_padding_summarization),
                    getPaddingTop(), getPaddingEnd(), getPaddingBottom());
            setTypeface(Typeface.create("variable-body-medium", Typeface.ITALIC));
            setShadowLayer(25f, 0f, 0f, 0);
        } else {
            setPaddingRelative(mContext.getResources().getDimensionPixelSize(
                    R.dimen.notification_text_message_start_padding),
                    getPaddingTop(), getPaddingEnd(), getPaddingBottom());
            setTextAppearance(R.style.TextAppearance_DeviceDefault_Notification);
            setShadowLayer(0f, 0f, 0f, 0);
        }
    }

    @Override
    public void finalizeInflate() {
        try {
Loading