diff --git a/res/values/strings.xml b/res/values/strings.xml
index fef874b0..46b0cce1 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 c1750334..0f8e3565 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 232d46f8..fbb08e71 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 3e1909d8..a2b272a1 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);