aboutsummaryrefslogtreecommitdiffstats
path: root/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java')
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java132
1 files changed, 53 insertions, 79 deletions
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java
index 13926d172..c32a797be 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java
@@ -52,12 +52,11 @@ import android.text.format.DateFormat;
import android.widget.TextView;
import android.widget.Toast;
-import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
@SuppressLint("NewApi")
-public class KeyViewActivity extends SherlockFragmentActivity implements CreateNdefMessageCallback,
+public class KeyViewActivity extends KeyActivity implements CreateNdefMessageCallback,
OnNdefPushCompleteCallback {
private Uri mDataUri;
@@ -96,7 +95,7 @@ public class KeyViewActivity extends SherlockFragmentActivity implements CreateN
} else {
Log.d(Constants.TAG, "uri: " + mDataUri);
loadData(mDataUri);
- initNfc();
+ initNfc(mDataUri);
}
}
@@ -111,31 +110,32 @@ public class KeyViewActivity extends SherlockFragmentActivity implements CreateN
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_key_view_update:
- updateFromKeyserver();
+ updateFromKeyserver(mDataUri);
return true;
case R.id.menu_key_view_sign:
- signKey();
+ signKey(mDataUri);
return true;
case R.id.menu_key_view_export_keyserver:
- uploadToKeyserver();
+ uploadToKeyserver(mDataUri);
return true;
case R.id.menu_key_view_export_file:
- exportToFile();
+ showExportKeysDialog(mDataUri, Id.type.public_key, Constants.path.APP_DIR
+ + "/pubexport.asc");
return true;
case R.id.menu_key_view_share_default:
- shareKey();
+ shareKey(mDataUri);
return true;
case R.id.menu_key_view_share_qr_code:
- shareKeyQrCode();
+ shareKeyQrCode(mDataUri);
return true;
case R.id.menu_key_view_share_nfc:
shareNfc();
return true;
case R.id.menu_key_view_share_clipboard:
- copyToClipboard();
+ copyToClipboard(mDataUri);
return true;
case R.id.menu_key_view_delete:
- deleteKey();
+ deleteKey(mDataUri, Id.type.public_key);
return true;
}
@@ -188,24 +188,8 @@ public class KeyViewActivity extends SherlockFragmentActivity implements CreateN
return result;
}
- private void exportToFile() {
- // long masterKeyId = ProviderHelper.getPublicMasterKeyId(mKeyListActivity,
- // keyRingRowId);
- // if (masterKeyId == -1) {
- // masterKeyId = ProviderHelper.getSecretMasterKeyId(mKeyListActivity, keyRingRowId);
- // }
- //
- // mKeyListActivity.showExportKeysDialog(masterKeyId);
- }
-
- private void deleteKey() {
- long keyRingRowId = Long.valueOf(mDataUri.getLastPathSegment());
-
- // mKeyListActivity.showDeleteKeyDialog(keyRingRowId);
- }
-
- private void uploadToKeyserver() {
- long keyRingRowId = Long.valueOf(mDataUri.getLastPathSegment());
+ private void uploadToKeyserver(Uri dataUri) {
+ long keyRingRowId = Long.valueOf(dataUri.getLastPathSegment());
Intent uploadIntent = new Intent(this, KeyServerUploadActivity.class);
uploadIntent.setAction(KeyServerUploadActivity.ACTION_EXPORT_KEY_TO_SERVER);
@@ -213,20 +197,22 @@ public class KeyViewActivity extends SherlockFragmentActivity implements CreateN
startActivityForResult(uploadIntent, Id.request.export_to_server);
}
- private void updateFromKeyserver() {
- // TODO: use data uri!
- long keyRingRowId = Long.valueOf(mDataUri.getLastPathSegment());
-
+ private void updateFromKeyserver(Uri dataUri) {
long updateKeyId = 0;
- PGPPublicKeyRing updateKeyRing = ProviderHelper.getPGPPublicKeyRingByRowId(this,
- keyRingRowId);
- if (updateKeyRing != null) {
- updateKeyId = PgpKeyHelper.getMasterKey(updateKeyRing).getKeyID();
+ PGPPublicKeyRing updateRing = (PGPPublicKeyRing) ProviderHelper
+ .getPGPKeyRing(this, dataUri);
+
+ if (updateRing != null) {
+ updateKeyId = PgpKeyHelper.getMasterKey(updateRing).getKeyID();
+ }
+ if (updateKeyId == 0) {
+ Log.e(Constants.TAG, "this shouldn't happen. KeyId == 0!");
+ return;
}
- // if (updateKeyId == 0) {
- // // this shouldn't happen
- // return true;
- // }
+
+ Intent signIntent = new Intent(this, SignKeyActivity.class);
+ signIntent.putExtra(SignKeyActivity.EXTRA_KEY_ID, updateKeyId);
+ startActivity(signIntent);
Intent queryIntent = new Intent(this, KeyServerQueryActivity.class);
queryIntent.setAction(KeyServerQueryActivity.ACTION_LOOK_UP_KEY_ID_AND_RETURN);
@@ -234,35 +220,29 @@ public class KeyViewActivity extends SherlockFragmentActivity implements CreateN
// TODO: lookup??
startActivityForResult(queryIntent, Id.request.look_up_key_id);
-
}
- private void signKey() {
- // TODO: use data uri!
- long keyRingRowId = Long.valueOf(mDataUri.getLastPathSegment());
-
+ private void signKey(Uri dataUri) {
long keyId = 0;
- PGPPublicKeyRing signKeyRing = ProviderHelper
- .getPGPPublicKeyRingByRowId(this, keyRingRowId);
- if (signKeyRing != null) {
- keyId = PgpKeyHelper.getMasterKey(signKeyRing).getKeyID();
+ PGPPublicKeyRing signKey = (PGPPublicKeyRing) ProviderHelper.getPGPKeyRing(this, dataUri);
+
+ if (signKey != null) {
+ keyId = PgpKeyHelper.getMasterKey(signKey).getKeyID();
+ }
+ if (keyId == 0) {
+ Log.e(Constants.TAG, "this shouldn't happen. KeyId == 0!");
+ return;
}
- // if (keyId == 0) {
- // // this shouldn't happen
- // return true;
- // }
Intent signIntent = new Intent(this, SignKeyActivity.class);
signIntent.putExtra(SignKeyActivity.EXTRA_KEY_ID, keyId);
startActivity(signIntent);
}
- private void shareKey() {
- // TODO: use data uri!
- long keyRingRowId = Long.valueOf(mDataUri.getLastPathSegment());
- long masterKeyId = ProviderHelper.getPublicMasterKeyId(this, keyRingRowId);
+ private void shareKey(Uri dataUri) {
// get public keyring as ascii armored string
- ArrayList<String> keyringArmored = ProviderHelper.getPublicKeyRingsAsArmoredString(this,
+ long masterKeyId = ProviderHelper.getMasterKeyId(this, dataUri);
+ ArrayList<String> keyringArmored = ProviderHelper.getKeyRingsAsArmoredString(this, dataUri,
new long[] { masterKeyId });
// let user choose application
@@ -273,12 +253,10 @@ public class KeyViewActivity extends SherlockFragmentActivity implements CreateN
getResources().getText(R.string.action_share_key_with)));
}
- private void shareKeyQrCode() {
- // TODO: use data uri!
- long keyRingRowId = Long.valueOf(mDataUri.getLastPathSegment());
- long masterKeyId = ProviderHelper.getPublicMasterKeyId(this, keyRingRowId);
+ private void shareKeyQrCode(Uri dataUri) {
// get public keyring as ascii armored string
- ArrayList<String> keyringArmored = ProviderHelper.getPublicKeyRingsAsArmoredString(this,
+ long masterKeyId = ProviderHelper.getMasterKeyId(this, dataUri);
+ ArrayList<String> keyringArmored = ProviderHelper.getKeyRingsAsArmoredString(this, dataUri,
new long[] { masterKeyId });
ShareQrCodeDialogFragment dialog = ShareQrCodeDialogFragment.newInstance(keyringArmored
@@ -286,38 +264,34 @@ public class KeyViewActivity extends SherlockFragmentActivity implements CreateN
dialog.show(getSupportFragmentManager(), "shareQrCodeDialog");
}
- private void shareNfc() {
- ShareNfcDialogFragment dialog = ShareNfcDialogFragment.newInstance();
- dialog.show(getSupportFragmentManager(), "shareNfcDialog");
- }
-
- private void copyToClipboard() {
- // TODO: use data uri!
- long keyRingRowId = Long.valueOf(mDataUri.getLastPathSegment());
- long masterKeyId = ProviderHelper.getPublicMasterKeyId(this, keyRingRowId);
+ private void copyToClipboard(Uri dataUri) {
// get public keyring as ascii armored string
- ArrayList<String> keyringArmored = ProviderHelper.getPublicKeyRingsAsArmoredString(this,
+ long masterKeyId = ProviderHelper.getMasterKeyId(this, dataUri);
+ ArrayList<String> keyringArmored = ProviderHelper.getKeyRingsAsArmoredString(this, dataUri,
new long[] { masterKeyId });
ClipboardReflection.copyToClipboard(this, keyringArmored.get(0));
}
+ private void shareNfc() {
+ ShareNfcDialogFragment dialog = ShareNfcDialogFragment.newInstance();
+ dialog.show(getSupportFragmentManager(), "shareNfcDialog");
+ }
+
/**
* NFC: Initialize NFC sharing if OS and device supports it
*/
- private void initNfc() {
+ private void initNfc(Uri dataUri) {
// check if NFC Beam is supported (>= Android 4.1)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
// Check for available NFC Adapter
mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (mNfcAdapter != null) {
// init nfc
- // TODO: use data uri!
- long keyRingRowId = Long.valueOf(mDataUri.getLastPathSegment());
- long masterKeyId = ProviderHelper.getPublicMasterKeyId(this, keyRingRowId);
// get public keyring as byte array
- mSharedKeyringBytes = ProviderHelper.getPublicKeyRingsAsByteArray(this,
+ long masterKeyId = ProviderHelper.getMasterKeyId(this, dataUri);
+ mSharedKeyringBytes = ProviderHelper.getKeyRingsAsByteArray(this, dataUri,
new long[] { masterKeyId });
// Register callback to set NDEF message