diff --git a/res/menu/conversation_context.xml b/res/menu/conversation_context.xml index 76c7318a9d..6f30718145 100644 --- a/res/menu/conversation_context.xml +++ b/res/menu/conversation_context.xml @@ -16,6 +16,11 @@ android:icon="?menu_copy_icon" app:showAsAction="always" /> + + Scan QR Code Scan the QR code of the person you\'d like to securely message. They can find their QR code by going into Loki Messenger\'s in-app settings and clicking \"Show QR Code\". + + Copy public key diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/src/org/thoughtcrime/securesms/conversation/ConversationFragment.java index 074ac80b89..88c13cbdcb 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -410,13 +410,15 @@ public class ConversationFragment extends Fragment if (isGroupChat) { boolean isLokiPublicChat = recipient.getName() != null && recipient.getName().equals("Loki Public Chat"); int selectedMessageCount = messageRecords.size(); + boolean isSentByUser = ((MessageRecord)messageRecords.toArray()[0]).isOutgoing(); + menu.findItem(R.id.menu_context_copy_public_key).setVisible(isLokiPublicChat && selectedMessageCount == 1 && !isSentByUser); menu.findItem(R.id.menu_context_reply).setVisible(isLokiPublicChat && selectedMessageCount == 1); LokiAPIDatabase lokiAPIDatabase = DatabaseFactory.getLokiAPIDatabase(getContext()); - boolean isSentByUser = ((MessageRecord)messageRecords.toArray()[0]).isOutgoing(); boolean userCanModerate = lokiAPIDatabase.isModerator(LokiGroupChatAPI.getPublicChatServerID(), LokiGroupChatAPI.getPublicChatServer()); boolean isDeleteOptionVisible = isLokiPublicChat && selectedMessageCount == 1 && (isSentByUser || userCanModerate); menu.findItem(R.id.menu_context_delete_message).setVisible(isDeleteOptionVisible); } else { + menu.findItem(R.id.menu_context_copy_public_key).setVisible(false); menu.findItem(R.id.menu_context_delete_message).setVisible(true); } } @@ -493,6 +495,11 @@ public class ConversationFragment extends Fragment clipboard.setText(result); } + private void handleCopyPublicKey(MessageRecord messageRecord) { + ClipboardManager clipboard = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE); + clipboard.setText(messageRecord.getRecipient().getAddress().toString()); + } + private void handleDeleteMessages(final Set messageRecords) { int messagesCount = messageRecords.size(); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); @@ -1121,6 +1128,10 @@ public class ConversationFragment extends Fragment handleCopyMessage(getListAdapter().getSelectedItems()); actionMode.finish(); return true; + case R.id.menu_context_copy_public_key: + handleCopyPublicKey((MessageRecord) getListAdapter().getSelectedItems().toArray()[0]); + actionMode.finish(); + return true; case R.id.menu_context_delete_message: handleDeleteMessages(getListAdapter().getSelectedItems()); actionMode.finish();