Show the name of the sender in search results ()

Just like a MUC, search results lack the context to be sure who sent a message,
so show the name in the result item.

(cherry picked from commit 9ae0475413334b33b713dae6b84a070c890d1d76)
(cherry picked from commit 95b2562a5a0de100b42821ca42e34a991cc1fb2a)
This commit is contained in:
Stephen Paul Weber 2022-09-14 17:13:17 +02:00 committed by Arne
parent d6f5b49736
commit 201849358d
3 changed files with 28 additions and 9 deletions
src/main
java/eu/siacs/conversations/ui
res/layout

View file

@ -29,6 +29,9 @@
package eu.siacs.conversations.ui;
import static eu.siacs.conversations.ui.util.SoftKeyboardUtils.hideSoftKeyboard;
import static eu.siacs.conversations.ui.util.SoftKeyboardUtils.showKeyboard;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
@ -72,9 +75,6 @@ import eu.siacs.conversations.utils.FtsUtils;
import eu.siacs.conversations.utils.MessageUtils;
import eu.siacs.conversations.utils.UIHelper;
import static eu.siacs.conversations.ui.util.SoftKeyboardUtils.hideSoftKeyboard;
import static eu.siacs.conversations.ui.util.SoftKeyboardUtils.showKeyboard;
public class SearchActivity extends XmppActivity implements TextWatcher, OnSearchResultsAvailable, MessageAdapter.OnContactPictureClicked {
private static final String EXTRA_SEARCH_TERM = "search-term";
@ -100,7 +100,7 @@ public class SearchActivity extends XmppActivity implements TextWatcher, OnSearc
this.binding = DataBindingUtil.setContentView(this, R.layout.activity_search);
setSupportActionBar((Toolbar) this.binding.toolbar);
configureActionBar(getSupportActionBar());
this.messageListAdapter = new MessageAdapter(this, this.messages);
this.messageListAdapter = new MessageAdapter(this, this.messages, uuid == null);
this.messageListAdapter.setOnContactPictureClicked(this);
this.binding.searchResults.setAdapter(messageListAdapter);
registerForContextMenu(this.binding.searchResults);

View file

@ -124,6 +124,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
private boolean mPlayGifInside = false;
private boolean mShowLinksInside = false;
private boolean mShowMapsInside = false;
private boolean mForceNames = false;
public MessageAdapter(XmppActivity activity, List<Message> messages) {
super(activity, 0, messages);
@ -133,6 +134,11 @@ public class MessageAdapter extends ArrayAdapter<Message> {
updatePreferences();
}
public MessageAdapter(XmppActivity activity, List<Message> messages, boolean forceNames) {
this(activity, messages);
mForceNames = forceNames;
}
private static void resetClickListener(View... views) {
for (View view : views) {
view.setOnClickListener(null);
@ -308,11 +314,10 @@ public class MessageAdapter extends ArrayAdapter<Message> {
error = true;
break;
default:
if (multiReceived) {
if (mForceNames || multiReceived) {
final int shadowSize = 10;
showUsername(viewHolder, message, darkBackground);
}
if (singleReceived) {
} else if (singleReceived) {
viewHolder.username.setVisibility(View.GONE);
}
break;
@ -406,12 +411,15 @@ public class MessageAdapter extends ArrayAdapter<Message> {
}
}
private void showUsername(ViewHolder viewHolder, Message message, boolean darkBackground) {
if (message.showUsername()) {
if (message == null || viewHolder == null) {
return;
}
viewHolder.username.setText(UIHelper.getColoredUsername(activity.xmppConnectionService, message));
if (message.showUsername() || mForceNames) {
viewHolder.username.setVisibility(View.VISIBLE);
} else {
viewHolder.username.setVisibility(View.GONE);
}
viewHolder.username.setText(UIHelper.getColoredUsername(activity.xmppConnectionService, message));
if (activity.xmppConnectionService.colored_muc_names() && ThemeHelper.showColoredUsernameBackGround(activity, darkBackground)) {
viewHolder.username.setPadding(4, 2, 4, 2);
viewHolder.username.setBackground(ContextCompat.getDrawable(activity, R.drawable.duration_background));
@ -1135,6 +1143,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
view = activity.getLayoutInflater().inflate(R.layout.message_sent, parent, false);
viewHolder.message_box = view.findViewById(R.id.message_box);
viewHolder.contact_picture = view.findViewById(R.id.message_photo);
viewHolder.username = view.findViewById(R.id.username);
viewHolder.audioPlayer = view.findViewById(R.id.audio_player);
viewHolder.download_button = view.findViewById(R.id.download_button);
viewHolder.resend_button = view.findViewById(R.id.resend_button);

View file

@ -56,6 +56,16 @@
android:orientation="vertical"
android:padding="2dp">
<TextView
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:text="@string/user"
android:textAppearance="@style/TextAppearance.Conversations.Caption"
android:visibility="gone"/>
<include
android:id="@+id/message_content"
layout="@layout/message_content" />