aboutsummaryrefslogtreecommitdiffstats
path: root/src/org/thialfihar/android/apg/PublicKeyListActivity.java
diff options
context:
space:
mode:
authorThialfihar <thialfihar@gmail.com>2010-08-18 00:23:28 +0000
committerThialfihar <thialfihar@gmail.com>2010-08-18 00:23:28 +0000
commit4f25edbe9701a37c5b9589a6911cf695017578c6 (patch)
tree0d24caad347335329c9f39637d9283d47efab842 /src/org/thialfihar/android/apg/PublicKeyListActivity.java
parentc57c36b3a53f92ece7df2c6c1f1e0316a2c92bb9 (diff)
downloadopen-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.java66
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;
+ }
}
}
}