aboutsummaryrefslogtreecommitdiffstats
path: root/src/eu/siacs
diff options
context:
space:
mode:
Diffstat (limited to 'src/eu/siacs')
-rw-r--r--src/eu/siacs/conversations/entities/MucOptions.java18
-rw-r--r--src/eu/siacs/conversations/ui/ConversationActivity.java2
-rw-r--r--src/eu/siacs/conversations/ui/ConversationFragment.java28
3 files changed, 42 insertions, 6 deletions
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);