diff options
author | Thialfihar <thialfihar@gmail.com> | 2010-08-18 00:23:28 +0000 |
---|---|---|
committer | Thialfihar <thialfihar@gmail.com> | 2010-08-18 00:23:28 +0000 |
commit | 4f25edbe9701a37c5b9589a6911cf695017578c6 (patch) | |
tree | 0d24caad347335329c9f39637d9283d47efab842 /src/org/thialfihar/android/apg/PublicKeyListActivity.java | |
parent | c57c36b3a53f92ece7df2c6c1f1e0316a2c92bb9 (diff) | |
download | open-keychain-4f25edbe9701a37c5b9589a6911cf695017578c6.tar.gz open-keychain-4f25edbe9701a37c5b9589a6911cf695017578c6.tar.bz2 open-keychain-4f25edbe9701a37c5b9589a6911cf695017578c6.zip |
added a context menu item to update public keys via key server, adding a key id look up Intent for the key server query
Update issue 9
Status: Fixed
Added public key update via key server. Considering this issue fixed now. More key server features will be added, but general support is added.
Diffstat (limited to 'src/org/thialfihar/android/apg/PublicKeyListActivity.java')
-rw-r--r-- | src/org/thialfihar/android/apg/PublicKeyListActivity.java | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/org/thialfihar/android/apg/PublicKeyListActivity.java b/src/org/thialfihar/android/apg/PublicKeyListActivity.java index 610e23683..70e9c44af 100644 --- a/src/org/thialfihar/android/apg/PublicKeyListActivity.java +++ b/src/org/thialfihar/android/apg/PublicKeyListActivity.java @@ -16,12 +16,17 @@ package org.thialfihar.android.apg; +import org.bouncycastle2.openpgp.PGPPublicKeyRing; + +import android.content.Intent; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.widget.ExpandableListView; +import android.widget.ExpandableListView.ExpandableListContextMenuInfo; public class PublicKeyListActivity extends KeyListActivity { @Override @@ -57,6 +62,67 @@ public class PublicKeyListActivity extends KeyListActivity { // TODO: user id? menu.setHeaderTitle("Key"); menu.add(0, Id.menu.export, 0, R.string.menu_exportKey); menu.add(0, Id.menu.delete, 1, R.string.menu_deleteKey); + menu.add(0, Id.menu.update, 1, R.string.menu_updateKey); + } + } + + @Override + public boolean onContextItemSelected(MenuItem menuItem) { + ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) menuItem.getMenuInfo(); + int type = ExpandableListView.getPackedPositionType(info.packedPosition); + int groupPosition = ExpandableListView.getPackedPositionGroup(info.packedPosition); + + if (type != ExpandableListView.PACKED_POSITION_TYPE_GROUP) { + return super.onContextItemSelected(menuItem); + } + + switch (menuItem.getItemId()) { + case Id.menu.update: { + mSelectedItem = groupPosition; + final int keyRingId = mListAdapter.getKeyRingId(groupPosition); + long keyId = 0; + Object keyRing = Apg.getKeyRing(keyRingId); + if (keyRing != null && keyRing instanceof PGPPublicKeyRing) { + keyId = Apg.getMasterKey((PGPPublicKeyRing) keyRing).getKeyID(); + } + if (keyId == 0) { + // this shouldn't happen + return true; + } + + Intent intent = new Intent(this, KeyServerQueryActivity.class); + intent.setAction(Apg.Intent.LOOK_UP_KEY_ID); + intent.putExtra(Apg.EXTRA_KEY_ID, keyId); + startActivityForResult(intent, Id.request.look_up_key_id); + return true; + } + + default: { + return super.onContextItemSelected(menuItem); + } + } + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + switch (requestCode) { + case Id.request.look_up_key_id: { + if (resultCode == RESULT_CANCELED || data == null || + data.getStringExtra(Apg.EXTRA_TEXT) == null) { + return; + } + + Intent intent = new Intent(this, PublicKeyListActivity.class); + intent.setAction(Apg.Intent.IMPORT); + intent.putExtra(Apg.EXTRA_TEXT, data.getStringExtra(Apg.EXTRA_TEXT)); + handleIntent(intent); + break; + } + + default: { + super.onActivityResult(requestCode, resultCode, data); + break; + } } } } |