show context menu when long pressing own account picture
This commit is contained in:
parent
2f3ccb5f90
commit
20e731c956
|
@ -83,6 +83,7 @@ import eu.siacs.conversations.entities.TransferablePlaceholder;
|
||||||
import eu.siacs.conversations.http.HttpDownloadConnection;
|
import eu.siacs.conversations.http.HttpDownloadConnection;
|
||||||
import eu.siacs.conversations.persistance.FileBackend;
|
import eu.siacs.conversations.persistance.FileBackend;
|
||||||
import eu.siacs.conversations.services.MessageArchiveService;
|
import eu.siacs.conversations.services.MessageArchiveService;
|
||||||
|
import eu.siacs.conversations.services.QuickConversationsService;
|
||||||
import eu.siacs.conversations.services.XmppConnectionService;
|
import eu.siacs.conversations.services.XmppConnectionService;
|
||||||
import eu.siacs.conversations.ui.adapter.MediaPreviewAdapter;
|
import eu.siacs.conversations.ui.adapter.MediaPreviewAdapter;
|
||||||
import eu.siacs.conversations.ui.adapter.MessageAdapter;
|
import eu.siacs.conversations.ui.adapter.MessageAdapter;
|
||||||
|
@ -102,6 +103,7 @@ import eu.siacs.conversations.ui.util.SendButtonTool;
|
||||||
import eu.siacs.conversations.ui.util.ShareUtil;
|
import eu.siacs.conversations.ui.util.ShareUtil;
|
||||||
import eu.siacs.conversations.ui.util.ViewUtil;
|
import eu.siacs.conversations.ui.util.ViewUtil;
|
||||||
import eu.siacs.conversations.ui.widget.EditMessage;
|
import eu.siacs.conversations.ui.widget.EditMessage;
|
||||||
|
import eu.siacs.conversations.utils.AccountUtils;
|
||||||
import eu.siacs.conversations.utils.Compatibility;
|
import eu.siacs.conversations.utils.Compatibility;
|
||||||
import eu.siacs.conversations.utils.GeoHelper;
|
import eu.siacs.conversations.utils.GeoHelper;
|
||||||
import eu.siacs.conversations.utils.MessageUtils;
|
import eu.siacs.conversations.utils.MessageUtils;
|
||||||
|
@ -2727,36 +2729,32 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onContactPictureLongClicked(View v, final Message message) {
|
public void onContactPictureLongClicked(View v, final Message message) {
|
||||||
if (message.getStatus() <= Message.STATUS_RECEIVED) {
|
final String fingerprint;
|
||||||
final PopupMenu popupMenu = new PopupMenu(getActivity(), v);
|
|
||||||
if (message.getConversation().getMode() == Conversation.MODE_MULTI) {
|
|
||||||
final Jid cp = message.getCounterpart();
|
|
||||||
if (cp == null || cp.isBareJid()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Jid tcp = message.getTrueCounterpart();
|
|
||||||
User userByRealJid = tcp != null ? conversation.getMucOptions().findOrCreateUserByRealJid(tcp, cp) : null;
|
|
||||||
final User user = userByRealJid != null ? userByRealJid : conversation.getMucOptions().findUserByFullJid(cp);
|
|
||||||
popupMenu.inflate(R.menu.muc_details_context);
|
|
||||||
final Menu menu = popupMenu.getMenu();
|
|
||||||
MucDetailsContextMenuHelper.configureMucDetailsContextMenu(activity, menu, conversation, user);
|
|
||||||
popupMenu.setOnMenuItemClickListener(menuItem -> MucDetailsContextMenuHelper.onContextItemSelected(menuItem, user, activity));
|
|
||||||
} else {
|
|
||||||
final Contact contact = message.getContact();
|
|
||||||
if (contact.isSelf()) {
|
|
||||||
activity.showQrCode(conversation.getAccount().getShareableUri());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
popupMenu.inflate(R.menu.one_on_one_context);
|
|
||||||
popupMenu.setOnMenuItemClickListener(item -> {
|
|
||||||
switch (item.getItemId()) {
|
|
||||||
case R.id.action_contact_details:
|
|
||||||
String fingerprint;
|
|
||||||
if (message.getEncryption() == Message.ENCRYPTION_PGP || message.getEncryption() == Message.ENCRYPTION_DECRYPTED) {
|
if (message.getEncryption() == Message.ENCRYPTION_PGP || message.getEncryption() == Message.ENCRYPTION_DECRYPTED) {
|
||||||
fingerprint = "pgp";
|
fingerprint = "pgp";
|
||||||
} else {
|
} else {
|
||||||
fingerprint = message.getFingerprint();
|
fingerprint = message.getFingerprint();
|
||||||
}
|
}
|
||||||
|
final PopupMenu popupMenu = new PopupMenu(getActivity(), v);
|
||||||
|
final Contact contact = message.getContact();
|
||||||
|
if (message.getStatus() <= Message.STATUS_RECEIVED || (contact != null && contact.isSelf())) {
|
||||||
|
if (message.getConversation().getMode() == Conversation.MODE_MULTI) {
|
||||||
|
final Jid cp = message.getCounterpart();
|
||||||
|
if (cp == null || cp.isBareJid()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
final Jid tcp = message.getTrueCounterpart();
|
||||||
|
final User userByRealJid = tcp != null ? conversation.getMucOptions().findOrCreateUserByRealJid(tcp, cp) : null;
|
||||||
|
final User user = userByRealJid != null ? userByRealJid : conversation.getMucOptions().findUserByFullJid(cp);
|
||||||
|
popupMenu.inflate(R.menu.muc_details_context);
|
||||||
|
final Menu menu = popupMenu.getMenu();
|
||||||
|
MucDetailsContextMenuHelper.configureMucDetailsContextMenu(activity, menu, conversation, user);
|
||||||
|
popupMenu.setOnMenuItemClickListener(menuItem -> MucDetailsContextMenuHelper.onContextItemSelected(menuItem, user, activity, fingerprint));
|
||||||
|
} else {
|
||||||
|
popupMenu.inflate(R.menu.one_on_one_context);
|
||||||
|
popupMenu.setOnMenuItemClickListener(item -> {
|
||||||
|
switch (item.getItemId()) {
|
||||||
|
case R.id.action_contact_details:
|
||||||
activity.switchToContactDetails(message.getContact(), fingerprint);
|
activity.switchToContactDetails(message.getContact(), fingerprint);
|
||||||
break;
|
break;
|
||||||
case R.id.action_show_qr_code:
|
case R.id.action_show_qr_code:
|
||||||
|
@ -2766,10 +2764,26 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
popupMenu.show();
|
|
||||||
} else {
|
} else {
|
||||||
|
popupMenu.inflate(R.menu.account_context);
|
||||||
|
final Menu menu = popupMenu.getMenu();
|
||||||
|
menu.findItem(R.id.action_manage_accounts).setVisible(QuickConversationsService.isConversations());
|
||||||
|
popupMenu.setOnMenuItemClickListener(item -> {
|
||||||
|
switch (item.getItemId()) {
|
||||||
|
case R.id.action_show_qr_code:
|
||||||
activity.showQrCode(conversation.getAccount().getShareableUri());
|
activity.showQrCode(conversation.getAccount().getShareableUri());
|
||||||
|
break;
|
||||||
|
case R.id.action_account_details:
|
||||||
|
activity.switchToAccount(message.getConversation().getAccount(), fingerprint);
|
||||||
|
break;
|
||||||
|
case R.id.action_manage_accounts:
|
||||||
|
AccountUtils.launchManageAccounts(activity);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
popupMenu.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -3,6 +3,7 @@ package eu.siacs.conversations.ui;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.content.ActivityNotFoundException;
|
import android.content.ActivityNotFoundException;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentSender;
|
import android.content.IntentSender;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
|
|
@ -102,6 +102,10 @@ public final class MucDetailsContextMenuHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean onContextItemSelected(MenuItem item, User user, XmppActivity activity) {
|
public static boolean onContextItemSelected(MenuItem item, User user, XmppActivity activity) {
|
||||||
|
return onContextItemSelected(item, user, activity, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean onContextItemSelected(MenuItem item, User user, XmppActivity activity, final String fingerprint) {
|
||||||
final Conversation conversation = user.getConversation();
|
final Conversation conversation = user.getConversation();
|
||||||
final XmppConnectionService.OnAffiliationChanged onAffiliationChanged = activity instanceof XmppConnectionService.OnAffiliationChanged ? (XmppConnectionService.OnAffiliationChanged) activity : null;
|
final XmppConnectionService.OnAffiliationChanged onAffiliationChanged = activity instanceof XmppConnectionService.OnAffiliationChanged ? (XmppConnectionService.OnAffiliationChanged) activity : null;
|
||||||
final XmppConnectionService.OnRoleChanged onRoleChanged = activity instanceof XmppConnectionService.OnRoleChanged ? (XmppConnectionService.OnRoleChanged) activity : null;
|
final XmppConnectionService.OnRoleChanged onRoleChanged = activity instanceof XmppConnectionService.OnRoleChanged ? (XmppConnectionService.OnRoleChanged) activity : null;
|
||||||
|
@ -110,7 +114,7 @@ public final class MucDetailsContextMenuHelper {
|
||||||
case R.id.action_contact_details:
|
case R.id.action_contact_details:
|
||||||
Contact contact = user.getContact();
|
Contact contact = user.getContact();
|
||||||
if (contact != null) {
|
if (contact != null) {
|
||||||
activity.switchToContactDetails(contact);
|
activity.switchToContactDetails(contact, fingerprint);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
case R.id.start_conversation:
|
case R.id.start_conversation:
|
||||||
|
|
12
src/main/res/menu/account_context.xml
Normal file
12
src/main/res/menu/account_context.xml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_account_details"
|
||||||
|
android:title="@string/account_details"/>
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_manage_accounts"
|
||||||
|
android:title="@string/action_accounts"/>
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_show_qr_code"
|
||||||
|
android:title="@string/show_qr_code"/>
|
||||||
|
</menu>
|
Loading…
Reference in a new issue