aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java84
1 files changed, 49 insertions, 35 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java
index c5404094a..06c711b92 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptAsymmetricFragment.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2014 Dominik Schürmann <dominik@dominikschuermann.de>
+ * Copyright (C) 2014-2015 Dominik Schürmann <dominik@dominikschuermann.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -40,7 +40,17 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-public class EncryptAsymmetricFragment extends Fragment implements EncryptActivityInterface.UpdateListener {
+public class EncryptAsymmetricFragment extends Fragment {
+
+ public interface IAsymmetric {
+
+ public void onSignatureKeyIdChanged(long signatureKeyId);
+
+ public void onEncryptionKeyIdsChanged(long[] encryptionKeyIds);
+
+ public void onEncryptionUserIdsChanged(String[] encryptionUserIds);
+ }
+
ProviderHelper mProviderHelper;
// view
@@ -48,37 +58,43 @@ public class EncryptAsymmetricFragment extends Fragment implements EncryptActivi
private EncryptKeyCompletionView mEncryptKeyView;
// model
- private EncryptActivityInterface mEncryptInterface;
+ private IAsymmetric mEncryptInterface;
- @Override
- public void onNotifyUpdate() {
- if (mSign != null) {
- mSign.setSelectedKeyId(mEncryptInterface.getSignatureKey());
- }
+// @Override
+// public void onNotifyUpdate() {
+// if (mSign != null) {
+// mSign.setSelectedKeyId(mEncryptInterface.getSignatureKey());
+// }
+// }
+
+ public static final String ARG_SINGATURE_KEY_ID = "signature_key_id";
+ public static final String ARG_ENCRYPTION_KEY_IDS = "encryption_key_ids";
+
+
+ /**
+ * Creates new instance of this fragment
+ */
+ public static EncryptAsymmetricFragment newInstance(long signatureKey, long[] encryptionKeyIds) {
+ EncryptAsymmetricFragment frag = new EncryptAsymmetricFragment();
+
+ Bundle args = new Bundle();
+ args.putLong(ARG_SINGATURE_KEY_ID, signatureKey);
+ args.putLongArray(ARG_ENCRYPTION_KEY_IDS, encryptionKeyIds);
+ frag.setArguments(args);
+
+ return frag;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
- mEncryptInterface = (EncryptActivityInterface) activity;
+ mEncryptInterface = (IAsymmetric) activity;
} catch (ClassCastException e) {
- throw new ClassCastException(activity.toString() + " must implement EncryptActivityInterface");
+ throw new ClassCastException(activity.toString() + " must implement IAsymmetric");
}
}
- private void setSignatureKeyId(long signatureKeyId) {
- mEncryptInterface.setSignatureKey(signatureKeyId);
- }
-
- private void setEncryptionKeyIds(long[] encryptionKeyIds) {
- mEncryptInterface.setEncryptionKeys(encryptionKeyIds);
- }
-
- private void setEncryptionUserIds(String[] encryptionUserIds) {
- mEncryptInterface.setEncryptionUsers(encryptionUserIds);
- }
-
/**
* Inflate the layout for this fragment
*/
@@ -90,7 +106,7 @@ public class EncryptAsymmetricFragment extends Fragment implements EncryptActivi
mSign.setOnKeyChangedListener(new KeySpinner.OnKeyChangedListener() {
@Override
public void onKeyChanged(long masterKeyId) {
- setSignatureKeyId(masterKeyId);
+ mEncryptInterface.onSignatureKeyIdChanged(masterKeyId);
}
});
mEncryptKeyView = (EncryptKeyCompletionView) view.findViewById(R.id.recipient_list);
@@ -105,7 +121,9 @@ public class EncryptAsymmetricFragment extends Fragment implements EncryptActivi
mProviderHelper = new ProviderHelper(getActivity());
// preselect keys given
- preselectKeys();
+ long signatureKeyId = getArguments().getLong(ARG_SINGATURE_KEY_ID);
+ long[] encryptionKeyIds = getArguments().getLongArray(ARG_ENCRYPTION_KEY_IDS);
+ preselectKeys(signatureKeyId, encryptionKeyIds);
mEncryptKeyView.setTokenListener(new TokenCompleteTextView.TokenListener() {
@Override
@@ -127,24 +145,20 @@ public class EncryptAsymmetricFragment extends Fragment implements EncryptActivi
/**
* If an Intent gives a signatureMasterKeyId and/or encryptionMasterKeyIds, preselect those!
*/
- private void preselectKeys() {
- // TODO all of this works under the assumption that the first suitable subkey is always used!
- // not sure if we need to distinguish between different subkeys here?
- long signatureKey = mEncryptInterface.getSignatureKey();
- if (signatureKey != Constants.key.none) {
+ private void preselectKeys(long signatureKeyId, long[] encryptionKeyIds) {
+ if (signatureKeyId != Constants.key.none) {
try {
CachedPublicKeyRing keyring = mProviderHelper.getCachedPublicKeyRing(
- KeyRings.buildUnifiedKeyRingUri(signatureKey));
+ KeyRings.buildUnifiedKeyRingUri(signatureKeyId));
if (keyring.hasAnySecret()) {
- setSignatureKeyId(keyring.getMasterKeyId());
- mSign.setSelectedKeyId(mEncryptInterface.getSignatureKey());
+ mEncryptInterface.onSignatureKeyIdChanged(keyring.getMasterKeyId());
+ mSign.setSelectedKeyId(signatureKeyId);
}
} catch (PgpKeyNotFoundException e) {
Log.e(Constants.TAG, "key not found!", e);
}
}
- long[] encryptionKeyIds = mEncryptInterface.getEncryptionKeys();
if (encryptionKeyIds != null) {
for (long preselectedId : encryptionKeyIds) {
try {
@@ -176,7 +190,7 @@ public class EncryptAsymmetricFragment extends Fragment implements EncryptActivi
for (int i = 0; i < keyIds.size(); i++) {
keyIdsArr[i] = iterator.next();
}
- setEncryptionKeyIds(keyIdsArr);
- setEncryptionUserIds(userIds.toArray(new String[userIds.size()]));
+ mEncryptInterface.onEncryptionKeyIdsChanged(keyIdsArr);
+ mEncryptInterface.onEncryptionUserIdsChanged(userIds.toArray(new String[userIds.size()]));
}
}