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 @@
offering…
No OpenPGP Key found
Conversations is unable to encrypt your messages because your contact is not announcing his or hers public key.\n\nPlease ask your contact to setup OpenPGP.
+ No OpenPGP Keys found
+ Conversations is unable to encrypt your messages because your contacts are not announcing their public key.\n\nPlease ask your contacts to setup OpenPGP.
Encrypted message received. Touch to view and decrypt.
Encrypted image received. Touch to view and decrypt.
Image received. Touch to view
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);