diff options
Diffstat (limited to 'src/main/java/de/pixart/messenger/ui/ConversationFragment.java')
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/ConversationFragment.java | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java index 1ea11de90..0d4610c8e 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java @@ -6,6 +6,7 @@ import android.animation.AnimatorInflater; import android.annotation.SuppressLint; import android.app.Activity; import android.app.Fragment; +import android.app.FragmentManager; import android.app.PendingIntent; import android.content.Context; import android.content.DialogInterface; @@ -592,6 +593,17 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke } } + public static ConversationFragment get(Activity activity) { + FragmentManager fragmentManager = activity.getFragmentManager(); + Fragment fragment = fragmentManager.findFragmentById(R.id.main_fragment); + if (fragment != null && fragment instanceof ConversationFragment) { + return (ConversationFragment) fragment; + } else { + fragment = fragmentManager.findFragmentById(R.id.secondary_fragment); + return fragment != null && fragment instanceof ConversationFragment ? (ConversationFragment) fragment : null; + } + } + public static Conversation getConversationReliable(Activity activity) { final Conversation conversation = getConversation(activity, R.id.secondary_fragment); if (conversation != null) { @@ -1272,21 +1284,13 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke Jid tcp = message.getTrueCounterpart(); Jid cp = message.getCounterpart(); if (cp != null && !cp.isBareJid()) { - User userByRealJid = conversation.getMucOptions().findOrCreateUserByRealJid(tcp); + User userByRealJid = tcp != null ? conversation.getMucOptions().findOrCreateUserByRealJid(tcp) : null; final User user = userByRealJid != null ? userByRealJid : conversation.getMucOptions().findUserByFullJid(cp); final PopupMenu popupMenu = new PopupMenu(getActivity(), v); popupMenu.inflate(R.menu.muc_details_context); final Menu menu = popupMenu.getMenu(); - final boolean advancedMode = activity.getPreferences().getBoolean("advanced_muc_mode", false); - MucDetailsContextMenuHelper.configureMucDetailsContextMenu(menu, conversation, user, advancedMode); - final MucOptions mucOptions = ((Conversation) message.getConversation()).getMucOptions(); - popupMenu.setOnMenuItemClickListener(menuItem -> { - if (menuItem.getItemId() == R.id.send_private_message) { - privateMessageWith(cp); - return true; - } - return MucDetailsContextMenuHelper.onContextItemSelected(menuItem, user, conversation, activity, activity, activity); - }); + MucDetailsContextMenuHelper.configureMucDetailsContextMenu(activity, menu, conversation, user); + popupMenu.setOnMenuItemClickListener(menuItem -> MucDetailsContextMenuHelper.onContextItemSelected(menuItem, user, conversation, activity)); popupMenu.show(); } } @@ -2025,7 +2029,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke conversation.getAccount().getPgpDecryptionService().decrypt(message, false); } - private void privateMessageWith(final Jid counterpart) { + public void privateMessageWith(final Jid counterpart) { if (conversation.setOutgoingChatState(Config.DEFAULT_CHATSTATE)) { activity.xmppConnectionService.sendChatState(conversation); } |