From 00dab81b9e6926adb9ed844b807fec87d8839be7 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Sun, 16 Jun 2024 20:30:45 -0500 Subject: [PATCH] in reply to indicator and jump to --- .../ui/ConversationFragment.java | 12 +++++++++ .../ui/adapter/MessageAdapter.java | 15 +++++++++++ src/main/res/layout/item_message_content.xml | 26 +++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 38e86318bb0b411c240e2b8bb7a0de43fef9dd04..9da8b9b9a8e496e38a64b26eb1d63041d233806f 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -2752,6 +2752,18 @@ public class ConversationFragment extends XmppFragment return null; } + public void jumpTo(final Message message) { + if (message.getUuid() == null) return; + for (int i = 0; i < messageList.size(); i++) { + final var m = messageList.get(i); + if (m == null) continue; + if (message.getUuid().equals(m.getUuid())) { + binding.messagesView.setSelection(i); + return; + } + } + } + private void openWith(final Message message) { if (message.isGeoUri()) { GeoHelper.view(getActivity(), message); diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index 640b157abfa6cd17627a76b46f7e97066752fb2f..65a2d809aee2f346016c16e7c5e1bb410b3551fd 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -1074,6 +1074,8 @@ public class MessageAdapter extends ArrayAdapter { viewHolder.messageBody = view.findViewById(R.id.message_body); viewHolder.time = view.findViewById(R.id.message_time); viewHolder.subject = view.findViewById(R.id.message_subject); + viewHolder.inReplyTo = view.findViewById(R.id.in_reply_to); + viewHolder.inReplyToBox = view.findViewById(R.id.in_reply_to_box); viewHolder.indicatorReceived = view.findViewById(R.id.indicator_received); viewHolder.audioPlayer = view.findViewById(R.id.audio_player); viewHolder.thread_identicon = view.findViewById(R.id.thread_identicon); @@ -1091,6 +1093,8 @@ public class MessageAdapter extends ArrayAdapter { viewHolder.messageBody = view.findViewById(R.id.message_body); viewHolder.time = view.findViewById(R.id.message_time); viewHolder.subject = view.findViewById(R.id.message_subject); + viewHolder.inReplyTo = view.findViewById(R.id.in_reply_to); + viewHolder.inReplyToBox = view.findViewById(R.id.in_reply_to_box); viewHolder.indicatorReceived = view.findViewById(R.id.indicator_received); viewHolder.encryption = view.findViewById(R.id.message_encryption); viewHolder.audioPlayer = view.findViewById(R.id.audio_player); @@ -1468,6 +1472,15 @@ public class MessageAdapter extends ArrayAdapter { viewHolder.subject.setVisibility(View.VISIBLE); viewHolder.subject.setText(subject); } + + if (message.getInReplyTo() == null) { + viewHolder.inReplyToBox.setVisibility(View.GONE); + } else { + viewHolder.inReplyToBox.setVisibility(View.VISIBLE); + viewHolder.inReplyTo.setText(UIHelper.getMessageDisplayName(message.getInReplyTo())); + viewHolder.inReplyTo.setOnClickListener((v) -> mConversationFragment.jumpTo(message.getInReplyTo())); + setTextColor(viewHolder.inReplyTo, bubbleColor); + } } displayStatus(viewHolder, message, type, bubbleColor); @@ -1687,6 +1700,8 @@ public class MessageAdapter extends ArrayAdapter { protected ImageView indicatorReceived; protected TextView time; protected TextView subject; + protected TextView inReplyTo; + protected LinearLayout inReplyToBox; protected TextView messageBody; protected ImageView contact_picture; protected TextView status_message; diff --git a/src/main/res/layout/item_message_content.xml b/src/main/res/layout/item_message_content.xml index 816035d2174b29ef4a3dc541a6811e63f4c62840..36e69fd2f65128414037b6bce4979cee6f47164b 100644 --- a/src/main/res/layout/item_message_content.xml +++ b/src/main/res/layout/item_message_content.xml @@ -21,6 +21,32 @@ app:shapeAppearance="@style/ShapeAppearanceOverlay.MessageImage" /> + + + + + + +