Disable Axolotl option if not usable

In MUCs or if contact is not axolotl capable, disable axolotl menu
option
This commit is contained in:
Andreas Straub 2015-07-10 03:02:49 +02:00
parent 9e8d9a6401
commit 6c38e53128
2 changed files with 10 additions and 33 deletions

View file

@ -37,6 +37,7 @@ import java.util.List;
import eu.siacs.conversations.Config; import eu.siacs.conversations.Config;
import eu.siacs.conversations.R; import eu.siacs.conversations.R;
import eu.siacs.conversations.crypto.axolotl.AxolotlService;
import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.entities.Blockable; import eu.siacs.conversations.entities.Blockable;
import eu.siacs.conversations.entities.Contact; import eu.siacs.conversations.entities.Contact;
@ -752,15 +753,10 @@ public class ConversationActivity extends XmppActivity
} }
break; break;
case R.id.encryption_choice_axolotl: case R.id.encryption_choice_axolotl:
Log.d(Config.LOGTAG, "Trying to enable axolotl..."); Log.d(Config.LOGTAG, AxolotlService.getLogprefix(conversation.getAccount())
if(conversation.getAccount().getAxolotlService().isContactAxolotlCapable(conversation.getContact())) { + "Enabled axolotl for Contact " + conversation.getContact().getJid());
Log.d(Config.LOGTAG, "Enabled axolotl for Contact " + conversation.getContact().getJid() );
conversation.setNextEncryption(Message.ENCRYPTION_AXOLOTL); conversation.setNextEncryption(Message.ENCRYPTION_AXOLOTL);
item.setChecked(true); item.setChecked(true);
} else {
Log.d(Config.LOGTAG, "Contact " + conversation.getContact().getJid() + " not axolotl capable!");
showAxolotlNoSessionsDialog();
}
break; break;
default: default:
conversation.setNextEncryption(Message.ENCRYPTION_NONE); conversation.setNextEncryption(Message.ENCRYPTION_NONE);
@ -776,13 +772,18 @@ public class ConversationActivity extends XmppActivity
MenuItem otr = popup.getMenu().findItem(R.id.encryption_choice_otr); MenuItem otr = popup.getMenu().findItem(R.id.encryption_choice_otr);
MenuItem none = popup.getMenu().findItem(R.id.encryption_choice_none); MenuItem none = popup.getMenu().findItem(R.id.encryption_choice_none);
MenuItem pgp = popup.getMenu().findItem(R.id.encryption_choice_pgp); MenuItem pgp = popup.getMenu().findItem(R.id.encryption_choice_pgp);
MenuItem axolotl = popup.getMenu().findItem(R.id.encryption_choice_axolotl);
if (conversation.getMode() == Conversation.MODE_MULTI) { if (conversation.getMode() == Conversation.MODE_MULTI) {
otr.setEnabled(false); otr.setEnabled(false);
axolotl.setEnabled(false);
} else { } else {
if (forceEncryption()) { if (forceEncryption()) {
none.setVisible(false); none.setVisible(false);
} }
} }
if (!conversation.getAccount().getAxolotlService().isContactAxolotlCapable(conversation.getContact())) {
axolotl.setEnabled(false);
}
switch (conversation.getNextEncryption(forceEncryption())) { switch (conversation.getNextEncryption(forceEncryption())) {
case Message.ENCRYPTION_NONE: case Message.ENCRYPTION_NONE:
none.setChecked(true); none.setChecked(true);
@ -794,7 +795,6 @@ public class ConversationActivity extends XmppActivity
pgp.setChecked(true); pgp.setChecked(true);
break; break;
case Message.ENCRYPTION_AXOLOTL: case Message.ENCRYPTION_AXOLOTL:
Log.d(Config.LOGTAG, "Axolotl confirmed. Setting menu item checked!");
popup.getMenu().findItem(R.id.encryption_choice_axolotl) popup.getMenu().findItem(R.id.encryption_choice_axolotl)
.setChecked(true); .setChecked(true);
break; break;

View file

@ -266,29 +266,6 @@ public abstract class XmppActivity extends Activity {
builder.create().show(); builder.create().show();
} }
public void showAxolotlNoSessionsDialog() {
Builder builder = new AlertDialog.Builder(this);
builder.setTitle("No Sessions");
builder.setIconAttribute(android.R.attr.alertDialogIcon);
builder.setMessage("Your contact is not Axolotl-capable!");
builder.setNegativeButton(getString(R.string.cancel), null);
builder.setNeutralButton("Foo",
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setPositiveButton("Bar",
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.create().show();
}
abstract void onBackendConnected(); abstract void onBackendConnected();
protected void registerListeners() { protected void registerListeners() {