diff options
-rw-r--r-- | res/values/strings.xml | 2 | ||||
-rw-r--r-- | src/eu/siacs/conversations/entities/MucOptions.java | 18 | ||||
-rw-r--r-- | src/eu/siacs/conversations/ui/ConversationActivity.java | 2 | ||||
-rw-r--r-- | src/eu/siacs/conversations/ui/ConversationFragment.java | 28 |
4 files changed, 44 insertions, 6 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index fef874b02..46b0cce1e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -115,6 +115,8 @@ <string name="offering">offering…</string> <string name="no_pgp_key">No OpenPGP Key found</string> <string name="contact_has_no_pgp_key">Conversations is unable to encrypt your messages because your contact is not announcing his or hers public key.\n\n<small>Please ask your contact to setup OpenPGP.</small></string> + <string name="no_pgp_keys">No OpenPGP Keys found</string> + <string name="contacts_have_no_pgp_keys">Conversations is unable to encrypt your messages because your contacts are not announcing their public key.\n\n<small>Please ask your contacts to setup OpenPGP.</small></string> <string name="encrypted_message_received"><i>Encrypted message received. Touch to view and decrypt.</i></string> <string name="encrypted_image_received"><i>Encrypted image received. Touch to view and decrypt.</i></string> <string name="image_file"><i>Image received. Touch to view</i></string> diff --git a/src/eu/siacs/conversations/entities/MucOptions.java b/src/eu/siacs/conversations/entities/MucOptions.java index c1750334b..0f8e35658 100644 --- a/src/eu/siacs/conversations/entities/MucOptions.java +++ b/src/eu/siacs/conversations/entities/MucOptions.java @@ -250,4 +250,22 @@ public class MucOptions { } return primitivLongArray; } + + public boolean pgpKeysInUse() { + for(User user : getUsers()) { + if (user.getPgpKeyId()!=0) { + return true; + } + } + return false; + } + + public boolean everybodyHasKeys() { + for(User user : getUsers()) { + if (user.getPgpKeyId()==0) { + return false; + } + } + return true; + } }
\ No newline at end of file diff --git a/src/eu/siacs/conversations/ui/ConversationActivity.java b/src/eu/siacs/conversations/ui/ConversationActivity.java index 232d46f80..fbb08e718 100644 --- a/src/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/eu/siacs/conversations/ui/ConversationActivity.java @@ -396,7 +396,7 @@ public class ConversationActivity extends XmppActivity { final ConversationFragment fragment = (ConversationFragment) getFragmentManager() .findFragmentByTag("conversation"); if (fragment != null) { - fragment.showNoPGPKeyDialog(new OnClickListener() { + fragment.showNoPGPKeyDialog(false,new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { diff --git a/src/eu/siacs/conversations/ui/ConversationFragment.java b/src/eu/siacs/conversations/ui/ConversationFragment.java index 3e1909d83..a2b272a13 100644 --- a/src/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/eu/siacs/conversations/ui/ConversationFragment.java @@ -701,7 +701,7 @@ public class ConversationFragment extends Fragment { }); } else { - showNoPGPKeyDialog(new DialogInterface.OnClickListener() { + showNoPGPKeyDialog(false,new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -713,16 +713,34 @@ public class ConversationFragment extends Fragment { }); } } else { - activity.encryptTextMessage(); + if (conversation.getMucOptions().pgpKeysInUse()) { + activity.encryptTextMessage(); + } else { + showNoPGPKeyDialog(true,new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, int which) { + conversation.setNextEncryption(Message.ENCRYPTION_NONE); + message.setEncryption(Message.ENCRYPTION_NONE); + xmppService.sendMessage(message, null); + chatMsg.setText(""); + } + }); + } } } } - public void showNoPGPKeyDialog(DialogInterface.OnClickListener listener) { + public void showNoPGPKeyDialog(boolean plural, DialogInterface.OnClickListener listener) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - builder.setTitle(getString(R.string.no_pgp_key)); builder.setIconAttribute(android.R.attr.alertDialogIcon); - builder.setMessage(getText(R.string.contact_has_no_pgp_key)); + if (plural) { + builder.setTitle(getString(R.string.no_pgp_keys)); + builder.setMessage(getText(R.string.contacts_have_no_pgp_keys)); + } else { + builder.setTitle(getString(R.string.no_pgp_key)); + builder.setMessage(getText(R.string.contact_has_no_pgp_key)); + } builder.setNegativeButton(getString(R.string.cancel), null); builder.setPositiveButton(getString(R.string.send_unencrypted), listener); |