click on avatars in message search opens contact details
This commit is contained in:
parent
e6feb91390
commit
3d243866a4
|
@ -62,7 +62,7 @@
|
||||||
android:label="@string/title_activity_share_location"/>
|
android:label="@string/title_activity_share_location"/>
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.SearchActivity"
|
android:name=".ui.SearchActivity"
|
||||||
android:label="@string/title_activity_search"/>
|
android:label="@string/search_messages"/>
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.RecordingActivity"
|
android:name=".ui.RecordingActivity"
|
||||||
android:theme="@style/ConversationsTheme.Dialog"
|
android:theme="@style/ConversationsTheme.Dialog"
|
||||||
|
|
|
@ -931,6 +931,12 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
||||||
binding.messagesView.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
|
binding.messagesView.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
|
||||||
messageListAdapter = new MessageAdapter((XmppActivity) getActivity(), this.messageList);
|
messageListAdapter = new MessageAdapter((XmppActivity) getActivity(), this.messageList);
|
||||||
messageListAdapter.setOnContactPictureClicked(message -> {
|
messageListAdapter.setOnContactPictureClicked(message -> {
|
||||||
|
String fingerprint;
|
||||||
|
if (message.getEncryption() == Message.ENCRYPTION_PGP || message.getEncryption() == Message.ENCRYPTION_DECRYPTED) {
|
||||||
|
fingerprint = "pgp";
|
||||||
|
} else {
|
||||||
|
fingerprint = message.getFingerprint();
|
||||||
|
}
|
||||||
final boolean received = message.getStatus() <= Message.STATUS_RECEIVED;
|
final boolean received = message.getStatus() <= Message.STATUS_RECEIVED;
|
||||||
if (received) {
|
if (received) {
|
||||||
if (message.getConversation() instanceof Conversation && message.getConversation().getMode() == Conversation.MODE_MULTI) {
|
if (message.getConversation() instanceof Conversation && message.getConversation().getMode() == Conversation.MODE_MULTI) {
|
||||||
|
@ -949,30 +955,12 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
if (!message.getContact().isSelf()) {
|
if (!message.getContact().isSelf()) {
|
||||||
String fingerprint;
|
|
||||||
if (message.getEncryption() == Message.ENCRYPTION_PGP
|
|
||||||
|| message.getEncryption() == Message.ENCRYPTION_DECRYPTED) {
|
|
||||||
fingerprint = "pgp";
|
|
||||||
} else {
|
|
||||||
fingerprint = message.getFingerprint();
|
|
||||||
}
|
|
||||||
activity.switchToContactDetails(message.getContact(), fingerprint);
|
activity.switchToContactDetails(message.getContact(), fingerprint);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Account account = message.getConversation().getAccount();
|
activity.switchToAccount(message.getConversation().getAccount(), fingerprint);
|
||||||
Intent intent = new Intent(activity, EditAccountActivity.class);
|
|
||||||
intent.putExtra("jid", account.getJid().asBareJid().toString());
|
|
||||||
String fingerprint;
|
|
||||||
if (message.getEncryption() == Message.ENCRYPTION_PGP
|
|
||||||
|| message.getEncryption() == Message.ENCRYPTION_DECRYPTED) {
|
|
||||||
fingerprint = "pgp";
|
|
||||||
} else {
|
|
||||||
fingerprint = message.getFingerprint();
|
|
||||||
}
|
|
||||||
intent.putExtra("fingerprint", fingerprint);
|
|
||||||
startActivity(intent);
|
|
||||||
});
|
});
|
||||||
messageListAdapter.setOnContactPictureLongClicked(message -> {
|
messageListAdapter.setOnContactPictureLongClicked(message -> {
|
||||||
if (message.getStatus() <= Message.STATUS_RECEIVED) {
|
if (message.getStatus() <= Message.STATUS_RECEIVED) {
|
||||||
|
|
|
@ -46,6 +46,7 @@ import java.util.List;
|
||||||
import eu.siacs.conversations.Config;
|
import eu.siacs.conversations.Config;
|
||||||
import eu.siacs.conversations.R;
|
import eu.siacs.conversations.R;
|
||||||
import eu.siacs.conversations.databinding.ActivitySearchBinding;
|
import eu.siacs.conversations.databinding.ActivitySearchBinding;
|
||||||
|
import eu.siacs.conversations.entities.Contact;
|
||||||
import eu.siacs.conversations.entities.Message;
|
import eu.siacs.conversations.entities.Message;
|
||||||
import eu.siacs.conversations.services.MessageSearchTask;
|
import eu.siacs.conversations.services.MessageSearchTask;
|
||||||
import eu.siacs.conversations.ui.adapter.MessageAdapter;
|
import eu.siacs.conversations.ui.adapter.MessageAdapter;
|
||||||
|
@ -57,7 +58,7 @@ import eu.siacs.conversations.ui.util.ListViewUtils;
|
||||||
import static eu.siacs.conversations.ui.util.SoftKeyboardUtils.hideSoftKeyboard;
|
import static eu.siacs.conversations.ui.util.SoftKeyboardUtils.hideSoftKeyboard;
|
||||||
import static eu.siacs.conversations.ui.util.SoftKeyboardUtils.showKeyboard;
|
import static eu.siacs.conversations.ui.util.SoftKeyboardUtils.showKeyboard;
|
||||||
|
|
||||||
public class SearchActivity extends XmppActivity implements TextWatcher, OnSearchResultsAvailable {
|
public class SearchActivity extends XmppActivity implements TextWatcher, OnSearchResultsAvailable, MessageAdapter.OnContactPictureClicked {
|
||||||
|
|
||||||
private ActivitySearchBinding binding;
|
private ActivitySearchBinding binding;
|
||||||
private MessageAdapter messageListAdapter;
|
private MessageAdapter messageListAdapter;
|
||||||
|
@ -70,6 +71,7 @@ public class SearchActivity extends XmppActivity implements TextWatcher, OnSearc
|
||||||
setSupportActionBar((Toolbar) this.binding.toolbar);
|
setSupportActionBar((Toolbar) this.binding.toolbar);
|
||||||
configureActionBar(getSupportActionBar());
|
configureActionBar(getSupportActionBar());
|
||||||
this.messageListAdapter = new MessageAdapter(this, this.messages);
|
this.messageListAdapter = new MessageAdapter(this, this.messages);
|
||||||
|
this.messageListAdapter.setOnContactPictureClicked(this);
|
||||||
this.binding.searchResults.setAdapter(messageListAdapter);
|
this.binding.searchResults.setAdapter(messageListAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,4 +150,26 @@ public class SearchActivity extends XmppActivity implements TextWatcher, OnSearc
|
||||||
ListViewUtils.scrollToBottom(this.binding.searchResults);
|
ListViewUtils.scrollToBottom(this.binding.searchResults);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onContactPictureClicked(Message message) {
|
||||||
|
String fingerprint;
|
||||||
|
if (message.getEncryption() == Message.ENCRYPTION_PGP || message.getEncryption() == Message.ENCRYPTION_DECRYPTED) {
|
||||||
|
fingerprint = "pgp";
|
||||||
|
} else {
|
||||||
|
fingerprint = message.getFingerprint();
|
||||||
|
}
|
||||||
|
if (message.getStatus() == Message.STATUS_RECEIVED) {
|
||||||
|
final Contact contact = message.getContact();
|
||||||
|
if (contact != null) {
|
||||||
|
if (contact.isSelf()) {
|
||||||
|
switchToAccount(message.getConversation().getAccount(), fingerprint);
|
||||||
|
} else {
|
||||||
|
switchToContactDetails(contact, fingerprint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switchToAccount(message.getConversation().getAccount(), fingerprint);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -521,17 +521,24 @@ public abstract class XmppActivity extends ActionBarActivity {
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void switchToAccount(Account account) {
|
public void switchToAccount(Account account, String fingerprint) {
|
||||||
switchToAccount(account, false);
|
switchToAccount(account, false, fingerprint);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void switchToAccount(Account account, boolean init) {
|
public void switchToAccount(Account account) {
|
||||||
|
switchToAccount(account, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void switchToAccount(Account account, boolean init, String fingerprint) {
|
||||||
Intent intent = new Intent(this, EditAccountActivity.class);
|
Intent intent = new Intent(this, EditAccountActivity.class);
|
||||||
intent.putExtra("jid", account.getJid().asBareJid().toString());
|
intent.putExtra("jid", account.getJid().asBareJid().toString());
|
||||||
intent.putExtra("init", init);
|
intent.putExtra("init", init);
|
||||||
if (init) {
|
if (init) {
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION);
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION);
|
||||||
}
|
}
|
||||||
|
if (fingerprint != null) {
|
||||||
|
intent.putExtra("fingerprint", fingerprint);
|
||||||
|
}
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
if (init) {
|
if (init) {
|
||||||
overridePendingTransition(0, 0);
|
overridePendingTransition(0, 0);
|
||||||
|
|
|
@ -36,7 +36,7 @@ import android.widget.ListView;
|
||||||
public class ListViewUtils {
|
public class ListViewUtils {
|
||||||
|
|
||||||
public static void scrollToBottom(final ListView listView) {
|
public static void scrollToBottom(final ListView listView) {
|
||||||
int count = listView.getAdapter().getCount();
|
final int count = listView.getAdapter().getCount();
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
setSelection(listView, count - 1, true);
|
setSelection(listView, count - 1, true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
<item
|
<item
|
||||||
android:id="@+id/action_search"
|
android:id="@+id/action_search"
|
||||||
android:title="@string/title_activity_search"
|
android:title="@string/search_messages"
|
||||||
android:orderInCategory="50"
|
android:orderInCategory="50"
|
||||||
app:showAsAction="never"/>
|
app:showAsAction="never"/>
|
||||||
</menu>
|
</menu>
|
|
@ -703,6 +703,5 @@
|
||||||
<string name="unable_to_start_recording">Unable to start recording</string>
|
<string name="unable_to_start_recording">Unable to start recording</string>
|
||||||
<string name="please_wait">Please wait…</string>
|
<string name="please_wait">Please wait…</string>
|
||||||
<string name="no_microphone_permission">Conversations needs access to the microphone</string>
|
<string name="no_microphone_permission">Conversations needs access to the microphone</string>
|
||||||
<string name="title_activity_search">Search</string>
|
|
||||||
<string name="search_messages">Search messages</string>
|
<string name="search_messages">Search messages</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Reference in a new issue