render reply message author name on the top of replied text
This commit is contained in:
parent
a7a00b70d7
commit
018120cfe6
|
@ -635,9 +635,9 @@ public class MessageAdapter extends ArrayAdapter<Message> implements DraggableLi
|
||||||
final String nick = UIHelper.getMessageDisplayName(message);
|
final String nick = UIHelper.getMessageDisplayName(message);
|
||||||
|
|
||||||
Message replyMessage = message.getReplyMessage();
|
Message replyMessage = message.getReplyMessage();
|
||||||
Boolean fileOrImageReply = replyMessage != null && replyMessage.isFileOrImage();
|
Boolean showReplyAsSeparatePart = (replyMessage != null && replyMessage.isFileOrImage()) || message.isFileOrImage();
|
||||||
|
|
||||||
SpannableStringBuilder body = message.getBodyForDisplaying(fileOrImageReply);
|
SpannableStringBuilder body = message.getBodyForDisplaying(showReplyAsSeparatePart);
|
||||||
|
|
||||||
boolean hasMeCommand = message.hasMeCommand();
|
boolean hasMeCommand = message.hasMeCommand();
|
||||||
if (hasMeCommand) {
|
if (hasMeCommand) {
|
||||||
|
@ -663,8 +663,8 @@ public class MessageAdapter extends ArrayAdapter<Message> implements DraggableLi
|
||||||
applyQuoteSpan(body, start, end, darkBackground, message.getReplyMessage() != null, message);
|
applyQuoteSpan(body, start, end, darkBackground, message.getReplyMessage() != null, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
maybeShowReply(replyMessage, fileOrImageReply, viewHolder, message);
|
maybeShowReply(replyMessage, showReplyAsSeparatePart, viewHolder, message, darkBackground);
|
||||||
handleTextQuotes(body, darkBackground, message.getReplyMessage() != null && !fileOrImageReply, message);
|
handleTextQuotes(body, darkBackground, message.getReplyMessage() != null && !showReplyAsSeparatePart, message);
|
||||||
|
|
||||||
if (!message.isPrivateMessage()) {
|
if (!message.isPrivateMessage()) {
|
||||||
if (hasMeCommand) {
|
if (hasMeCommand) {
|
||||||
|
@ -726,7 +726,14 @@ public class MessageAdapter extends ArrayAdapter<Message> implements DraggableLi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void maybeShowReply(Message replyMessage, boolean showAsSeparatePart, ViewHolder viewHolder, Message message) {
|
private void maybeShowReply(Message replyMessage, boolean showAsSeparatePart, ViewHolder viewHolder, Message message, boolean darkBackground) {
|
||||||
|
TextView text = viewHolder.nonTextReplyContent.findViewById(R.id.reply_body);
|
||||||
|
TextView author = viewHolder.nonTextReplyContent.findViewById(R.id.context_preview_author);
|
||||||
|
ImageView contextPreviewImage = viewHolder.nonTextReplyContent.findViewById(R.id.context_preview_image);
|
||||||
|
ImageView contextPreviewDoc = viewHolder.nonTextReplyContent.findViewById(R.id.context_preview_doc);
|
||||||
|
ImageView contextPreviewAudio = viewHolder.nonTextReplyContent.findViewById(R.id.context_preview_audio);
|
||||||
|
View iconsContainer = viewHolder.nonTextReplyContent.findViewById(R.id.icons_container);
|
||||||
|
|
||||||
if (showAsSeparatePart && replyMessage != null) {
|
if (showAsSeparatePart && replyMessage != null) {
|
||||||
viewHolder.nonTextReplyContent.setVisibility(View.VISIBLE);
|
viewHolder.nonTextReplyContent.setVisibility(View.VISIBLE);
|
||||||
WeakReference<ReplyClickListener> listener = new WeakReference<>(replyClickListener);
|
WeakReference<ReplyClickListener> listener = new WeakReference<>(replyClickListener);
|
||||||
|
@ -737,30 +744,47 @@ public class MessageAdapter extends ArrayAdapter<Message> implements DraggableLi
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
TextView text = viewHolder.nonTextReplyContent.findViewById(R.id.reply_body);
|
text.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
TextView author = viewHolder.nonTextReplyContent.findViewById(R.id.context_preview_author);
|
int color = this.getMessageTextColor(darkBackground, false);
|
||||||
ImageView contextPreviewImage = viewHolder.nonTextReplyContent.findViewById(R.id.context_preview_image);
|
text.setTextColor(color);
|
||||||
View contextPreviewDoc = viewHolder.nonTextReplyContent.findViewById(R.id.context_preview_doc);
|
author.setTextColor(color);
|
||||||
View contextPreviewAudio = viewHolder.nonTextReplyContent.findViewById(R.id.context_preview_audio);
|
contextPreviewDoc.setColorFilter(color);
|
||||||
|
contextPreviewAudio.setColorFilter(color);
|
||||||
|
|
||||||
text.setText(replyMessage.getBodyForReplyPreview(activity.xmppConnectionService));
|
text.setText(replyMessage.getBodyForReplyPreview(activity.xmppConnectionService));
|
||||||
author.setText(replyMessage.getAvatarName());
|
author.setText(replyMessage.getAvatarName());
|
||||||
|
|
||||||
if (replyMessage.getFileParams().width > 0 && replyMessage.getFileParams().height > 0) {
|
if (replyMessage.getFileParams().width > 0 && replyMessage.getFileParams().height > 0) {
|
||||||
|
iconsContainer.setVisibility(View.VISIBLE);
|
||||||
contextPreviewImage.setVisibility(View.VISIBLE);
|
contextPreviewImage.setVisibility(View.VISIBLE);
|
||||||
contextPreviewDoc.setVisibility(View.GONE);
|
contextPreviewDoc.setVisibility(View.GONE);
|
||||||
contextPreviewAudio.setVisibility(View.GONE);
|
contextPreviewAudio.setVisibility(View.GONE);
|
||||||
activity.loadBitmap(replyMessage, contextPreviewImage);
|
activity.loadBitmap(replyMessage, contextPreviewImage);
|
||||||
} else if (replyMessage.getFileParams().runtime > 0) {
|
} else if (replyMessage.getFileParams().runtime > 0) {
|
||||||
|
iconsContainer.setVisibility(View.VISIBLE);
|
||||||
contextPreviewImage.setVisibility(View.GONE);
|
contextPreviewImage.setVisibility(View.GONE);
|
||||||
contextPreviewDoc.setVisibility(View.GONE);
|
contextPreviewDoc.setVisibility(View.GONE);
|
||||||
contextPreviewAudio.setVisibility(View.VISIBLE);
|
contextPreviewAudio.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else if (replyMessage.isFileOrImage()) {
|
||||||
|
iconsContainer.setVisibility(View.VISIBLE);
|
||||||
contextPreviewImage.setVisibility(View.GONE);
|
contextPreviewImage.setVisibility(View.GONE);
|
||||||
contextPreviewDoc.setVisibility(View.VISIBLE);
|
contextPreviewDoc.setVisibility(View.VISIBLE);
|
||||||
contextPreviewAudio.setVisibility(View.GONE);
|
contextPreviewAudio.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
iconsContainer.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
} else if (replyMessage != null) {
|
||||||
|
viewHolder.nonTextReplyContent.setVisibility(View.VISIBLE);
|
||||||
|
contextPreviewImage.setVisibility(View.GONE);
|
||||||
|
contextPreviewDoc.setVisibility(View.GONE);
|
||||||
|
contextPreviewAudio.setVisibility(View.GONE);
|
||||||
|
text.setVisibility(View.GONE);
|
||||||
|
iconsContainer.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
int color = this.getMessageTextColor(darkBackground, false);
|
||||||
|
author.setTextColor(color);
|
||||||
|
author.setText(replyMessage.getAvatarName());
|
||||||
} else {
|
} else {
|
||||||
viewHolder.nonTextReplyContent.setVisibility(View.GONE);
|
viewHolder.nonTextReplyContent.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
@ -774,7 +798,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements DraggableLi
|
||||||
viewHolder.download_button.setText(text);
|
viewHolder.download_button.setText(text);
|
||||||
viewHolder.download_button.setOnClickListener(v -> ConversationFragment.downloadFile(activity, message));
|
viewHolder.download_button.setOnClickListener(v -> ConversationFragment.downloadFile(activity, message));
|
||||||
|
|
||||||
maybeShowReply(message.getReplyMessage(), true, viewHolder, message);
|
maybeShowReply(message.getReplyMessage(), true, viewHolder, message, darkBackground);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void displayOpenableMessage(ViewHolder viewHolder, final Message message, final boolean darkBackground) {
|
private void displayOpenableMessage(ViewHolder viewHolder, final Message message, final boolean darkBackground) {
|
||||||
|
@ -785,7 +809,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements DraggableLi
|
||||||
viewHolder.download_button.setText(activity.getString(R.string.open_x_file, UIHelper.getFileDescriptionString(activity, message)));
|
viewHolder.download_button.setText(activity.getString(R.string.open_x_file, UIHelper.getFileDescriptionString(activity, message)));
|
||||||
viewHolder.download_button.setOnClickListener(v -> openDownloadable(message));
|
viewHolder.download_button.setOnClickListener(v -> openDownloadable(message));
|
||||||
|
|
||||||
maybeShowReply(message.getReplyMessage(), true, viewHolder, message);
|
maybeShowReply(message.getReplyMessage(), true, viewHolder, message, darkBackground);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void displayLocationMessage(ViewHolder viewHolder, final Message message, final boolean darkBackground) {
|
private void displayLocationMessage(ViewHolder viewHolder, final Message message, final boolean darkBackground) {
|
||||||
|
@ -796,7 +820,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements DraggableLi
|
||||||
viewHolder.download_button.setText(R.string.show_location);
|
viewHolder.download_button.setText(R.string.show_location);
|
||||||
viewHolder.download_button.setOnClickListener(v -> showLocation(message));
|
viewHolder.download_button.setOnClickListener(v -> showLocation(message));
|
||||||
|
|
||||||
maybeShowReply(message.getReplyMessage(), true, viewHolder, message);
|
maybeShowReply(message.getReplyMessage(), true, viewHolder, message, darkBackground);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void displayAudioMessage(ViewHolder viewHolder, Message message, boolean darkBackground) {
|
private void displayAudioMessage(ViewHolder viewHolder, Message message, boolean darkBackground) {
|
||||||
|
@ -808,7 +832,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements DraggableLi
|
||||||
AudioPlayer.ViewHolder.get(audioPlayer).setDarkBackground(darkBackground);
|
AudioPlayer.ViewHolder.get(audioPlayer).setDarkBackground(darkBackground);
|
||||||
this.audioPlayer.init(audioPlayer, message);
|
this.audioPlayer.init(audioPlayer, message);
|
||||||
|
|
||||||
maybeShowReply(message.getReplyMessage(), true, viewHolder, message);
|
maybeShowReply(message.getReplyMessage(), true, viewHolder, message, darkBackground);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void displayMediaPreviewMessage(ViewHolder viewHolder, final Message message, final boolean darkBackground) {
|
private void displayMediaPreviewMessage(ViewHolder viewHolder, final Message message, final boolean darkBackground) {
|
||||||
|
@ -816,7 +840,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements DraggableLi
|
||||||
viewHolder.download_button.setVisibility(View.GONE);
|
viewHolder.download_button.setVisibility(View.GONE);
|
||||||
viewHolder.audioPlayer.setVisibility(View.GONE);
|
viewHolder.audioPlayer.setVisibility(View.GONE);
|
||||||
viewHolder.image.setVisibility(View.VISIBLE);
|
viewHolder.image.setVisibility(View.VISIBLE);
|
||||||
maybeShowReply(message.getReplyMessage(), true, viewHolder, message);
|
maybeShowReply(message.getReplyMessage(), true, viewHolder, message, darkBackground);
|
||||||
final FileParams params = message.getFileParams();
|
final FileParams params = message.getFileParams();
|
||||||
final float target = activity.getResources().getDimension(R.dimen.image_preview_width);
|
final float target = activity.getResources().getDimension(R.dimen.image_preview_width);
|
||||||
final int scaledW;
|
final int scaledW;
|
||||||
|
|
4
src/main/res/drawable/reply_divider.xml
Normal file
4
src/main/res/drawable/reply_divider.xml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||||
|
<item android:drawable="@color/blue_a100" android:width="2sp" android:left="1.5sp"/>
|
||||||
|
</layer-list>
|
|
@ -6,23 +6,15 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
|
android:background="@drawable/reply_divider"
|
||||||
|
android:paddingStart="11.5sp"
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/divider"
|
|
||||||
android:layout_width="2sp"
|
|
||||||
android:layout_height="32dp"
|
|
||||||
android:layout_marginEnd="8dp"
|
|
||||||
android:layout_marginStart="1dp"
|
|
||||||
android:layout_centerVertical="true"
|
|
||||||
android:background="@color/blue_a100" />
|
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/icons_container"
|
android:id="@+id/icons_container"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:layout_toEndOf="@id/divider"
|
|
||||||
android:layout_centerVertical="true">
|
android:layout_centerVertical="true">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -56,15 +48,17 @@
|
||||||
android:id="@+id/context_preview_author"
|
android:id="@+id/context_preview_author"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="-2dp"
|
||||||
android:layout_toEndOf="@id/icons_container"
|
android:layout_toEndOf="@id/icons_container"
|
||||||
|
android:textAppearance="@style/TextAppearance.Conversations.Body1"
|
||||||
android:fontFamily="sans-serif-medium" />
|
android:fontFamily="sans-serif-medium" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/reply_body"
|
android:id="@+id/reply_body"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="-2dp"
|
|
||||||
android:longClickable="false"
|
android:longClickable="false"
|
||||||
|
android:textAppearance="@style/TextAppearance.Conversations.Body1"
|
||||||
android:layout_toEndOf="@id/icons_container"
|
android:layout_toEndOf="@id/icons_container"
|
||||||
android:layout_below="@id/context_preview_author"/>
|
android:layout_below="@id/context_preview_author"/>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
Loading…
Reference in a new issue