mirror of
https://github.com/moparisthebest/Conversations
synced 2024-11-28 11:42:15 -05:00
offer to announce pgp key if pgp encryption is selected from menu
This commit is contained in:
parent
0ed29c1c77
commit
99a56a2bde
@ -423,7 +423,7 @@ public class ConversationActivity extends XmppActivity {
|
|||||||
startActivity(inviteIntent);
|
startActivity(inviteIntent);
|
||||||
break;
|
break;
|
||||||
case R.id.action_security:
|
case R.id.action_security:
|
||||||
final Conversation selConv = getSelectedConversation();
|
final Conversation conversation = getSelectedConversation();
|
||||||
View menuItemView = findViewById(R.id.action_security);
|
View menuItemView = findViewById(R.id.action_security);
|
||||||
PopupMenu popup = new PopupMenu(this, menuItemView);
|
PopupMenu popup = new PopupMenu(this, menuItemView);
|
||||||
final ConversationFragment fragment = (ConversationFragment) getFragmentManager()
|
final ConversationFragment fragment = (ConversationFragment) getFragmentManager()
|
||||||
@ -435,19 +435,25 @@ public class ConversationActivity extends XmppActivity {
|
|||||||
public boolean onMenuItemClick(MenuItem item) {
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case R.id.encryption_choice_none:
|
case R.id.encryption_choice_none:
|
||||||
selConv.setNextEncryption(Message.ENCRYPTION_NONE);
|
conversation.setNextEncryption(Message.ENCRYPTION_NONE);
|
||||||
item.setChecked(true);
|
item.setChecked(true);
|
||||||
break;
|
break;
|
||||||
case R.id.encryption_choice_otr:
|
case R.id.encryption_choice_otr:
|
||||||
selConv.setNextEncryption(Message.ENCRYPTION_OTR);
|
conversation.setNextEncryption(Message.ENCRYPTION_OTR);
|
||||||
item.setChecked(true);
|
item.setChecked(true);
|
||||||
break;
|
break;
|
||||||
case R.id.encryption_choice_pgp:
|
case R.id.encryption_choice_pgp:
|
||||||
selConv.setNextEncryption(Message.ENCRYPTION_PGP);
|
if (hasPgp()) {
|
||||||
|
if (conversation.getAccount().getKeys().has("pgp_signature")) {
|
||||||
|
conversation.setNextEncryption(Message.ENCRYPTION_PGP);
|
||||||
item.setChecked(true);
|
item.setChecked(true);
|
||||||
|
} else {
|
||||||
|
announcePgp(conversation.getAccount());
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
selConv.setNextEncryption(Message.ENCRYPTION_NONE);
|
conversation.setNextEncryption(Message.ENCRYPTION_NONE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fragment.updateChatMsgHint();
|
fragment.updateChatMsgHint();
|
||||||
@ -455,7 +461,7 @@ public class ConversationActivity extends XmppActivity {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
popup.inflate(R.menu.encryption_choices);
|
popup.inflate(R.menu.encryption_choices);
|
||||||
switch (selConv.getNextEncryption()) {
|
switch (conversation.getNextEncryption()) {
|
||||||
case Message.ENCRYPTION_NONE:
|
case Message.ENCRYPTION_NONE:
|
||||||
popup.getMenu().findItem(R.id.encryption_choice_none)
|
popup.getMenu().findItem(R.id.encryption_choice_none)
|
||||||
.setChecked(true);
|
.setChecked(true);
|
||||||
@ -468,10 +474,6 @@ public class ConversationActivity extends XmppActivity {
|
|||||||
popup.getMenu().findItem(R.id.encryption_choice_pgp)
|
popup.getMenu().findItem(R.id.encryption_choice_pgp)
|
||||||
.setChecked(true);
|
.setChecked(true);
|
||||||
break;
|
break;
|
||||||
case Message.ENCRYPTION_DECRYPTED:
|
|
||||||
popup.getMenu().findItem(R.id.encryption_choice_pgp)
|
|
||||||
.setChecked(true);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
popup.getMenu().findItem(R.id.encryption_choice_none)
|
popup.getMenu().findItem(R.id.encryption_choice_none)
|
||||||
.setChecked(true);
|
.setChecked(true);
|
||||||
|
@ -39,8 +39,6 @@ import android.widget.TextView;
|
|||||||
|
|
||||||
public class ManageAccountActivity extends XmppActivity {
|
public class ManageAccountActivity extends XmppActivity {
|
||||||
|
|
||||||
public static final int REQUEST_ANNOUNCE_PGP = 0x73731;
|
|
||||||
|
|
||||||
protected boolean isActionMode = false;
|
protected boolean isActionMode = false;
|
||||||
protected ActionMode actionMode;
|
protected ActionMode actionMode;
|
||||||
protected Account selectedAccountForActionMode = null;
|
protected Account selectedAccountForActionMode = null;
|
||||||
@ -281,7 +279,7 @@ public class ManageAccountActivity extends XmppActivity {
|
|||||||
} else if (item.getItemId()==R.id.mgmt_account_announce_pgp) {
|
} else if (item.getItemId()==R.id.mgmt_account_announce_pgp) {
|
||||||
if (activity.hasPgp()) {
|
if (activity.hasPgp()) {
|
||||||
mode.finish();
|
mode.finish();
|
||||||
announcePgp();
|
announcePgp(selectedAccountForActionMode);
|
||||||
}
|
}
|
||||||
} else if (item.getItemId() == R.id.mgmt_otr_key) {
|
} else if (item.getItemId() == R.id.mgmt_otr_key) {
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||||
@ -362,33 +360,6 @@ public class ManageAccountActivity extends XmppActivity {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void announcePgp() {
|
|
||||||
final Account account = selectedAccountForActionMode;
|
|
||||||
xmppConnectionService.getPgpEngine().generateSignature(account, "online", new OnPgpEngineResult() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void userInputRequried(PendingIntent pi) {
|
|
||||||
try {
|
|
||||||
startIntentSenderForResult(pi.getIntentSender(), REQUEST_ANNOUNCE_PGP, null, 0, 0, 0);
|
|
||||||
} catch (SendIntentException e) {
|
|
||||||
Log.d("xmppService","coulnd start intent for pgp anncouncment");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void success() {
|
|
||||||
xmppConnectionService.databaseBackend.updateAccount(account);
|
|
||||||
xmppConnectionService.sendPgpPresence(account, account.getPgpSignature());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void error(OpenPgpError openPgpError) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onStop() {
|
protected void onStop() {
|
||||||
if (xmppConnectionServiceBound) {
|
if (xmppConnectionServiceBound) {
|
||||||
@ -487,7 +458,7 @@ public class ManageAccountActivity extends XmppActivity {
|
|||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
if (resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
if (requestCode == REQUEST_ANNOUNCE_PGP) {
|
if (requestCode == REQUEST_ANNOUNCE_PGP) {
|
||||||
announcePgp();
|
announcePgp(selectedAccountForActionMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,28 +1,37 @@
|
|||||||
package eu.siacs.conversations.ui;
|
package eu.siacs.conversations.ui;
|
||||||
|
|
||||||
|
import org.openintents.openpgp.OpenPgpError;
|
||||||
|
|
||||||
import eu.siacs.conversations.R;
|
import eu.siacs.conversations.R;
|
||||||
|
import eu.siacs.conversations.crypto.OnPgpEngineResult;
|
||||||
|
import eu.siacs.conversations.entities.Account;
|
||||||
import eu.siacs.conversations.entities.Conversation;
|
import eu.siacs.conversations.entities.Conversation;
|
||||||
import eu.siacs.conversations.services.XmppConnectionService;
|
import eu.siacs.conversations.services.XmppConnectionService;
|
||||||
import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinder;
|
import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinder;
|
||||||
import eu.siacs.conversations.utils.ExceptionHelper;
|
import eu.siacs.conversations.utils.ExceptionHelper;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
|
import android.app.PendingIntent;
|
||||||
import android.app.AlertDialog.Builder;
|
import android.app.AlertDialog.Builder;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.DialogInterface.OnClickListener;
|
import android.content.DialogInterface.OnClickListener;
|
||||||
|
import android.content.IntentSender.SendIntentException;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.ServiceConnection;
|
import android.content.ServiceConnection;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
import android.view.inputmethod.InputMethodManager;
|
||||||
|
|
||||||
public abstract class XmppActivity extends Activity {
|
public abstract class XmppActivity extends Activity {
|
||||||
|
|
||||||
|
public static final int REQUEST_ANNOUNCE_PGP = 0x73731;
|
||||||
|
|
||||||
protected final static String LOGTAG = "xmppService";
|
protected final static String LOGTAG = "xmppService";
|
||||||
|
|
||||||
public XmppConnectionService xmppConnectionService;
|
public XmppConnectionService xmppConnectionService;
|
||||||
@ -152,4 +161,30 @@ public abstract class XmppActivity extends Activity {
|
|||||||
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||||
startActivity(viewConversationIntent);
|
startActivity(viewConversationIntent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void announcePgp(final Account account) {
|
||||||
|
xmppConnectionService.getPgpEngine().generateSignature(account, "online", new OnPgpEngineResult() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void userInputRequried(PendingIntent pi) {
|
||||||
|
try {
|
||||||
|
startIntentSenderForResult(pi.getIntentSender(), REQUEST_ANNOUNCE_PGP, null, 0, 0, 0);
|
||||||
|
} catch (SendIntentException e) {
|
||||||
|
Log.d("xmppService","coulnd start intent for pgp anncouncment");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void success() {
|
||||||
|
xmppConnectionService.databaseBackend.updateAccount(account);
|
||||||
|
xmppConnectionService.sendPgpPresence(account, account.getPgpSignature());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void error(OpenPgpError openPgpError) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user