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

Commit d4ca0f53 authored by Ioana Alexandru's avatar Ioana Alexandru
Browse files

Notif redesign: reduce conversation icon margin

Bug: 371174789
Test: visually checked that the notification has the smaller margin
Flag: android.app.notifications_redesign_app_icons
Change-Id: I50e9806abba4da17cf6c4021a73cffb2e525d873
parent 08ff158a
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import com.android.internal.widget.ConversationLayout
import com.android.internal.widget.MessagingGroup
import com.android.internal.widget.MessagingImageMessage
import com.android.internal.widget.MessagingLinearLayout
import com.android.internal.widget.NotificationRowIconView
import com.android.systemui.SysuiTestCase
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.NotificationTestHelper
@@ -90,7 +91,7 @@ class NotificationConversationTemplateViewWrapperTest : SysuiTestCase() {

    private fun fakeConversationLayout(
        mockDrawableGroupMessage: AnimatedImageDrawable,
        mockDrawableImageMessage: AnimatedImageDrawable
        mockDrawableImageMessage: AnimatedImageDrawable,
    ): View {
        val mockMessagingImageMessage: MessagingImageMessage =
            mock<MessagingImageMessage>().apply {
@@ -126,6 +127,7 @@ class NotificationConversationTemplateViewWrapperTest : SysuiTestCase() {
                whenever(requireViewById<CachingIconView>(R.id.conversation_icon))
                    .thenReturn(mock())
                whenever(findViewById<CachingIconView>(R.id.icon)).thenReturn(mock())
                whenever(requireViewById<NotificationRowIconView>(R.id.icon)).thenReturn(mock())
                whenever(requireViewById<View>(R.id.conversation_icon_badge_bg)).thenReturn(mock())
                whenever(requireViewById<View>(R.id.expand_button)).thenReturn(mock())
                whenever(requireViewById<View>(R.id.expand_button_container)).thenReturn(mock())
+55 −47
Original line number Diff line number Diff line
@@ -16,15 +16,18 @@

package com.android.systemui.statusbar.notification.row.wrapper

import android.app.Flags
import android.content.Context
import android.graphics.drawable.AnimatedImageDrawable
import android.view.View
import android.view.ViewGroup
import android.view.ViewGroup.MarginLayoutParams
import com.android.internal.widget.CachingIconView
import com.android.internal.widget.ConversationLayout
import com.android.internal.widget.MessagingGroup
import com.android.internal.widget.MessagingImageMessage
import com.android.internal.widget.MessagingLinearLayout
import com.android.internal.widget.NotificationRowIconView
import com.android.systemui.res.R
import com.android.systemui.statusbar.notification.NotificationFadeAware
import com.android.systemui.statusbar.notification.NotificationUtils
@@ -32,23 +35,23 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.wrapper.NotificationMessagingTemplateViewWrapper.setCustomImageMessageTransform
import com.android.systemui.util.children

/**
 * Wraps a notification containing a conversation template
 */
class NotificationConversationTemplateViewWrapper constructor(
/** Wraps a notification containing a conversation template */
class NotificationConversationTemplateViewWrapper(
    ctx: Context,
    view: View,
    row: ExpandableNotificationRow
    row: ExpandableNotificationRow,
) : NotificationTemplateViewWrapper(ctx, view, row) {

    private val minHeightWithActions: Int = NotificationUtils.getFontScaledHeight(
    private val minHeightWithActions: Int =
        NotificationUtils.getFontScaledHeight(
            ctx,
            R.dimen.notification_messaging_actions_min_height
            R.dimen.notification_messaging_actions_min_height,
        )
    private val conversationLayout: ConversationLayout = view as ConversationLayout

    private lateinit var conversationIconContainer: View
    private lateinit var conversationIconView: CachingIconView
    private lateinit var badgeIconView: NotificationRowIconView
    private lateinit var conversationBadgeBg: View
    private lateinit var expandBtn: View
    private lateinit var expandBtnContainer: View
@@ -70,6 +73,9 @@ class NotificationConversationTemplateViewWrapper constructor(
            conversationIconContainer =
                requireViewById(com.android.internal.R.id.conversation_icon_container)
            conversationIconView = requireViewById(com.android.internal.R.id.conversation_icon)
            if (Flags.notificationsRedesignAppIcons()) {
                badgeIconView = requireViewById(com.android.internal.R.id.icon)
            }
            conversationBadgeBg =
                requireViewById(com.android.internal.R.id.conversation_icon_badge_bg)
            expandBtn = requireViewById(com.android.internal.R.id.expand_button)
@@ -88,6 +94,13 @@ class NotificationConversationTemplateViewWrapper constructor(
        // Reinspect the notification. Before the super call, because the super call also updates
        // the transformation types and we need to have our values set by then.
        resolveViews()
        if (Flags.notificationsRedesignAppIcons() && row.isShowingAppIcon) {
            // Override the margins to be 2dp instead of 4dp according to the new design if we're
            // showing the app icon.
            val lp = badgeIconView.layoutParams as MarginLayoutParams
            lp.setMargins(2, 2, 2, 2)
            badgeIconView.layoutParams = lp
        }
        super.onContentUpdated(row)
    }

@@ -96,10 +109,7 @@ class NotificationConversationTemplateViewWrapper constructor(
        super.updateTransformedTypes()

        mTransformationHelper.addTransformedView(TRANSFORMING_VIEW_TITLE, conversationTitleView)
        addTransformedViews(
                messagingLinearLayout,
                appName
        )
        addTransformedViews(messagingLinearLayout, appName)

        setCustomImageMessageTransform(mTransformationHelper, imageMessageContainer)

@@ -110,21 +120,19 @@ class NotificationConversationTemplateViewWrapper constructor(
            importanceRing,
            facePileTop,
            facePileBottom,
                facePileBottomBg
            facePileBottomBg,
        )
    }

    override fun getShelfTransformationTarget(): View? =
        if (conversationLayout.isImportantConversation)
                if (conversationIconView.visibility != View.GONE)
                    conversationIconView
            if (conversationIconView.visibility != View.GONE) conversationIconView
            else
            // A notification with a fallback icon was set to important. Currently
            // the transformation doesn't work for these and needs to be fixed.
            // In the meantime those are using the icon.
            super.getShelfTransformationTarget()
            else
                super.getShelfTransformationTarget()
        else super.getShelfTransformationTarget()

    override fun setRemoteInputVisible(visible: Boolean) =
        conversationLayout.showHistoricMessages(visible)
@@ -132,20 +140,19 @@ class NotificationConversationTemplateViewWrapper constructor(
    override fun updateExpandability(
        expandable: Boolean,
        onClickListener: View.OnClickListener,
        requestLayout: Boolean
        requestLayout: Boolean,
    ) = conversationLayout.updateExpandability(expandable, onClickListener)

    override fun disallowSingleClick(x: Float, y: Float): Boolean {
        val isOnExpandButton = expandBtnContainer.visibility == View.VISIBLE &&
                isOnView(expandBtnContainer, x, y)
        val isOnExpandButton =
            expandBtnContainer.visibility == View.VISIBLE && isOnView(expandBtnContainer, x, y)
        return isOnExpandButton || super.disallowSingleClick(x, y)
    }

    override fun getMinLayoutHeight(): Int =
        if (mActionsContainer != null && mActionsContainer.visibility != View.GONE)
            minHeightWithActions
            else
                super.getMinLayoutHeight()
        else super.getMinLayoutHeight()

    override fun setNotificationFaded(faded: Boolean) {
        // Do not call super
@@ -157,7 +164,8 @@ class NotificationConversationTemplateViewWrapper constructor(
    override fun setAnimationsRunning(running: Boolean) {
        // We apply to both the child message containers in a conversation group,
        // and the top level image message container.
        val containers = messageContainers.asSequence().map { it.messageContainer } +
        val containers =
            messageContainers.asSequence().map { it.messageContainer } +
                sequenceOf(imageMessageContainer)
        val drawables =
            containers