From 5f30745908bf1fc2e7fa48cea4e126276648e8e7 Mon Sep 17 00:00:00 2001 From: Alan Evans Date: Tue, 1 Dec 2020 16:20:53 -0400 Subject: [PATCH] Reduce layout depth of conversation items. --- .../conversation/ConversationItem.java | 14 +- .../conversation_item_received_multimedia.xml | 417 +++++++++--------- .../conversation_item_received_text_only.xml | 273 ++++++------ .../conversation_item_sent_multimedia.xml | 309 +++++++------ .../conversation_item_sent_text_only.xml | 167 ++++--- 5 files changed, 569 insertions(+), 611 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java index 91c9fc9e50..499e288691 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -21,7 +21,6 @@ import android.annotation.SuppressLint; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; -import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.Rect; @@ -45,7 +44,7 @@ import android.util.AttributeSet; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; -import android.widget.LinearLayout; +import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; @@ -93,7 +92,6 @@ import org.thoughtcrime.securesms.jobs.SmsSendJob; import org.thoughtcrime.securesms.linkpreview.LinkPreview; import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil; import org.thoughtcrime.securesms.logging.Log; -import org.thoughtcrime.securesms.mms.AudioSlide; import org.thoughtcrime.securesms.mms.GlideRequests; import org.thoughtcrime.securesms.mms.ImageSlide; import org.thoughtcrime.securesms.mms.PartAuthority; @@ -113,11 +111,9 @@ import org.thoughtcrime.securesms.util.DateUtils; import org.thoughtcrime.securesms.util.DynamicTheme; import org.thoughtcrime.securesms.util.InterceptableLongClickCopyLinkSpan; import org.thoughtcrime.securesms.util.LongClickMovementMethod; -import org.thoughtcrime.securesms.util.MessageRecordUtil; import org.thoughtcrime.securesms.util.SearchUtil; import org.thoughtcrime.securesms.util.StringUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; -import org.thoughtcrime.securesms.util.ThemeUtil; import org.thoughtcrime.securesms.util.UrlClickHandler; import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.VibrateUtil; @@ -143,7 +139,7 @@ import static org.thoughtcrime.securesms.util.ThemeUtil.isDarkTheme; * */ -public class ConversationItem extends LinearLayout implements BindableConversationItem, +public final class ConversationItem extends RelativeLayout implements BindableConversationItem, RecipientForeverObserver { private static final String TAG = ConversationItem.class.getSimpleName(); @@ -173,7 +169,6 @@ public class ConversationItem extends LinearLayout implements BindableConversati @Nullable private View groupSenderHolder; private AvatarImageView contactPhoto; private AlertView alertView; - private ViewGroup container; protected ReactionsConversationView reactionsView; private @NonNull Set batchSelected = new HashSet<>(); @@ -242,7 +237,6 @@ public class ConversationItem extends LinearLayout implements BindableConversati this.revealableStub = new Stub<>(findViewById(R.id.revealable_view_stub)); this.groupSenderHolder = findViewById(R.id.group_sender_holder); this.quoteView = findViewById(R.id.quote_view); - this.container = findViewById(R.id.container); this.reply = findViewById(R.id.reply_icon); this.reactionsView = findViewById(R.id.reactions_view); @@ -1053,9 +1047,9 @@ public class ConversationItem extends LinearLayout implements BindableConversati private void setGutterSizes(@NonNull MessageRecord current, boolean isGroupThread) { if (isGroupThread && current.isOutgoing()) { - ViewUtil.setLeftMargin(container, readDimen(R.dimen.conversation_group_left_gutter)); + ViewUtil.setLeftMargin(this, readDimen(R.dimen.conversation_group_left_gutter)); } else if (current.isOutgoing()) { - ViewUtil.setLeftMargin(container, readDimen(R.dimen.conversation_individual_left_gutter)); + ViewUtil.setLeftMargin(this, readDimen(R.dimen.conversation_individual_left_gutter)); } } diff --git a/app/src/main/res/layout/conversation_item_received_multimedia.xml b/app/src/main/res/layout/conversation_item_received_multimedia.xml index 9f5de25378..287863bdcb 100644 --- a/app/src/main/res/layout/conversation_item_received_multimedia.xml +++ b/app/src/main/res/layout/conversation_item_received_multimedia.xml @@ -1,245 +1,236 @@ - + android:focusable="true" + android:nextFocusLeft="@+id/conversation_item" + android:nextFocusRight="@+id/embedded_text_editor" + android:orientation="vertical" + android:paddingStart="8dp"> - + - + - + android:contentDescription="@string/conversation_item_received__contact_photo_description" + android:cropToPadding="true" + android:foreground="@drawable/contact_photo_background" + app:fallbackImageSize="small" /> - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_marginStart="@dimen/message_bubble_horizontal_padding" + android:layout_marginTop="@dimen/message_bubble_top_padding" + android:layout_marginEnd="@dimen/message_bubble_horizontal_padding" + android:layout_marginBottom="2dp" + android:orientation="horizontal" + android:visibility="gone" + tools:visibility="visible"> + android:maxLines="1" + android:textColor="@color/conversation_item_received_text_primary_color" + android:textStyle="bold" + tools:text="+14152222222" + tools:visibility="visible" /> - - - + android:ellipsize="end" + android:fontFamily="sans-serif-regular" + android:maxLines="1" + android:paddingStart="4sp" + android:paddingEnd="4sp" + android:textColor="@color/conversation_item_received_text_primary_color" + android:textStyle="italic" + tools:text="~Clement Duval" /> - + - + android:layout_marginStart="6dp" + android:layout_marginTop="@dimen/message_bubble_top_padding" + android:layout_marginEnd="6dp" + android:visibility="gone" + app:message_type="incoming" + app:quote_colorPrimary="@color/conversation_item_quote_text_color" + app:quote_colorSecondary="@color/conversation_item_quote_text_color" + tools:visibility="visible" /> - + + + android:layout="@layout/conversation_item_received_thumbnail" /> + + + + + + + + + + + + + + + + + + + + + + - diff --git a/app/src/main/res/layout/conversation_item_received_text_only.xml b/app/src/main/res/layout/conversation_item_received_text_only.xml index aa1e77cf6e..1d88f26796 100644 --- a/app/src/main/res/layout/conversation_item_received_text_only.xml +++ b/app/src/main/res/layout/conversation_item_received_text_only.xml @@ -1,175 +1,166 @@ - + android:orientation="vertical" + android:paddingStart="8dp"> - + - + - + android:contentDescription="@string/conversation_item_received__contact_photo_description" + android:cropToPadding="true" + android:foreground="@drawable/contact_photo_background" + app:fallbackImageSize="small" /> - + - + - - - - - - - - - + android:layout_marginStart="@dimen/message_bubble_horizontal_padding" + android:layout_marginTop="@dimen/message_bubble_top_padding" + android:layout_marginEnd="@dimen/message_bubble_horizontal_padding" + android:layout_marginBottom="2dp" + android:orientation="horizontal" + android:visibility="gone" + tools:visibility="visible"> + android:maxLines="1" + android:textColor="@color/conversation_item_received_text_primary_color" + android:textStyle="bold" + tools:text="+14152222222" + tools:visibility="visible" /> - - - + android:ellipsize="end" + android:fontFamily="sans-serif-regular" + android:maxLines="1" + android:paddingStart="4sp" + android:paddingEnd="4sp" + android:textColor="@color/conversation_item_received_text_primary_color" + android:textStyle="italic" + tools:text="~Clement Duval" /> - + - + android:layout_marginStart="@dimen/message_bubble_horizontal_padding" + android:layout_marginTop="@dimen/message_bubble_top_padding" + android:layout_marginEnd="@dimen/message_bubble_horizontal_padding" + android:layout_marginBottom="@dimen/message_bubble_collapsed_footer_padding" + android:ellipsize="end" + android:textColor="@color/conversation_item_received_text_primary_color" + android:textColorLink="@color/conversation_item_received_text_primary_color" + app:emoji_maxLength="1000" + app:scaleEmojis="true" + tools:text="Mango pickle lorem ipsum" /> - + + + android:layout_marginStart="@dimen/message_bubble_horizontal_padding" + android:layout_marginTop="6dp" + android:layout_marginEnd="@dimen/message_bubble_horizontal_padding" + android:clipChildren="false" + android:clipToPadding="false" + android:gravity="start" + android:visibility="gone" + app:footer_icon_color="@color/signal_icon_tint_secondary" + app:footer_text_color="@color/signal_text_secondary" /> + + + + + + - diff --git a/app/src/main/res/layout/conversation_item_sent_multimedia.xml b/app/src/main/res/layout/conversation_item_sent_multimedia.xml index f2ce1f8ab9..43ad05e165 100644 --- a/app/src/main/res/layout/conversation_item_sent_multimedia.xml +++ b/app/src/main/res/layout/conversation_item_sent_multimedia.xml @@ -3,8 +3,9 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/conversation_item" - android:layout_width="fill_parent" + android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginEnd="@dimen/conversation_individual_right_gutter" android:clipChildren="false" android:clipToPadding="false" android:focusable="true" @@ -12,175 +13,165 @@ android:nextFocusRight="@id/embedded_text_editor" android:orientation="horizontal"> - + + + android:clipToPadding="false" + android:orientation="vertical" + tools:backgroundTint="@color/core_grey_05"> - - - + + + + + + + + + + + + + + + + + + + android:gravity="end" + app:footer_icon_color="@color/signal_icon_tint_secondary" + app:footer_reveal_dot_color="@color/signal_icon_tint_secondary" + app:footer_text_color="@color/signal_text_secondary" /> - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_gravity="end" + android:layout_marginStart="@dimen/message_bubble_horizontal_padding" + android:layout_marginTop="6dp" + android:layout_marginEnd="@dimen/message_bubble_horizontal_padding" + android:clipChildren="false" + android:clipToPadding="false" + android:gravity="end" + android:visibility="gone" + app:footer_icon_color="@color/signal_icon_tint_secondary" + app:footer_text_color="@color/signal_text_secondary" /> - + - + + + diff --git a/app/src/main/res/layout/conversation_item_sent_text_only.xml b/app/src/main/res/layout/conversation_item_sent_text_only.xml index 215b1bf907..4ba00e822b 100644 --- a/app/src/main/res/layout/conversation_item_sent_text_only.xml +++ b/app/src/main/res/layout/conversation_item_sent_text_only.xml @@ -3,8 +3,9 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/conversation_item" - android:layout_width="fill_parent" + android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginEnd="@dimen/conversation_individual_right_gutter" android:clipChildren="false" android:clipToPadding="false" android:focusable="true" @@ -12,104 +13,94 @@ android:nextFocusRight="@id/embedded_text_editor" android:orientation="horizontal"> - + + + android:clipToPadding="false" + android:orientation="vertical" + tools:backgroundTint="@color/core_grey_05"> - - - + + + android:gravity="end" + app:footer_icon_color="@color/signal_icon_tint_secondary" + app:footer_text_color="@color/signal_text_secondary" /> - - - - - - - - - + android:layout_marginStart="@dimen/message_bubble_horizontal_padding" + android:layout_marginTop="6dp" + android:layout_marginEnd="@dimen/message_bubble_horizontal_padding" + android:clipChildren="false" + android:clipToPadding="false" + android:gravity="end" + android:visibility="gone" + app:footer_icon_color="@color/signal_icon_tint_secondary" + app:footer_text_color="@color/signal_text_secondary" /> - + - + + +