aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java
diff options
context:
space:
mode:
authorAdithya Abraham Philip <adithyaphilip@gmail.com>2015-06-23 23:03:59 +0530
committerAdithya Abraham Philip <adithyaphilip@gmail.com>2015-06-27 01:20:23 +0530
commit5a5d66009f22eb93874acd369443acb25700456c (patch)
tree61075ed2235a9c651b8cfb84160ded39028cc679 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java
parent6008353df8f8d17795fadb5a34fc86ad5a8f2de9 (diff)
downloadopen-keychain-5a5d66009f22eb93874acd369443acb25700456c.tar.gz
open-keychain-5a5d66009f22eb93874acd369443acb25700456c.tar.bz2
open-keychain-5a5d66009f22eb93874acd369443acb25700456c.zip
added export and upload to KeychainNewService
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java86
1 files changed, 47 insertions, 39 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java
index ebbd01afe..7a580c541 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java
@@ -35,15 +35,18 @@ import org.spongycastle.bcpg.sig.KeyFlags;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.operations.results.EditKeyResult;
+import org.sufficientlysecure.keychain.operations.results.ExportResult;
import org.sufficientlysecure.keychain.operations.results.OperationResult;
import org.sufficientlysecure.keychain.pgp.KeyRing;
import org.sufficientlysecure.keychain.provider.KeychainContract;
+import org.sufficientlysecure.keychain.service.ExportKeyringParcel;
import org.sufficientlysecure.keychain.service.KeychainService;
import org.sufficientlysecure.keychain.service.ServiceProgressHandler;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction;
+import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.Preferences;
@@ -63,6 +66,8 @@ public class CreateKeyFinalFragment extends Fragment {
SaveKeyringParcel mSaveKeyringParcel;
+ private CryptoOperationHelper<ExportKeyringParcel, ExportResult> mOperationHelper;
+
public static CreateKeyFinalFragment newInstance() {
CreateKeyFinalFragment frag = new CreateKeyFinalFragment();
@@ -134,6 +139,9 @@ public class CreateKeyFinalFragment extends Fragment {
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (mOperationHelper != null) {
+ mOperationHelper.handleActivityResult(requestCode, resultCode, data);
+ }
switch (requestCode) {
case REQUEST_EDIT_KEY: {
if (resultCode == Activity.RESULT_OK) {
@@ -249,58 +257,58 @@ public class CreateKeyFinalFragment extends Fragment {
// TODO move into EditKeyOperation
private void uploadKey(final EditKeyResult saveKeyResult) {
- // Send all information needed to service to upload key in other thread
- final Intent intent = new Intent(getActivity(), KeychainService.class);
-
- intent.setAction(KeychainService.ACTION_UPLOAD_KEYRING);
// set data uri as path to keyring
- Uri blobUri = KeychainContract.KeyRings.buildUnifiedKeyRingUri(
+ final Uri blobUri = KeychainContract.KeyRings.buildUnifiedKeyRingUri(
saveKeyResult.mMasterKeyId);
- intent.setData(blobUri);
-
- // fill values for this action
- Bundle data = new Bundle();
-
// upload to favorite keyserver
- String keyserver = Preferences.getPreferences(getActivity()).getPreferredKeyserver();
- data.putString(KeychainService.UPLOAD_KEY_SERVER, keyserver);
+ final String keyserver = Preferences.getPreferences(getActivity()).getPreferredKeyserver();
- intent.putExtra(KeychainService.EXTRA_DATA, data);
+ CryptoOperationHelper.Callback<ExportKeyringParcel, ExportResult> callback
+ = new CryptoOperationHelper.Callback<ExportKeyringParcel, ExportResult>() {
- ServiceProgressHandler saveHandler = new ServiceProgressHandler(getActivity()) {
@Override
- public void handleMessage(Message message) {
- // handle messages by standard KeychainIntentServiceHandler first
- super.handleMessage(message);
+ public ExportKeyringParcel createOperationInput() {
+ return new ExportKeyringParcel(keyserver, blobUri);
+ }
- if (message.arg1 == MessageStatus.OKAY.ordinal()) {
- // TODO: upload operation needs a result!
- // TODO: then combine these results
- //if (result.getResult() == OperationResultParcel.RESULT_OK) {
- //Notify.create(getActivity(), R.string.key_send_success,
- //Notify.Style.OK).show();
-
- Intent data = new Intent();
- data.putExtra(OperationResult.EXTRA_RESULT, saveKeyResult);
- getActivity().setResult(Activity.RESULT_OK, data);
- getActivity().finish();
- }
+ @Override
+ public void onCryptoOperationSuccess(ExportResult result) {
+ // TODO: upload operation needs a result!
+ // TODO: then combine these results (saveKeyResult and update op result)
+ //if (result.getResult() == OperationResultParcel.RESULT_OK) {
+ //Notify.create(getActivity(), R.string.key_send_success,
+ //Notify.Style.OK).show();
+
+ Intent data = new Intent();
+ data.putExtra(OperationResult.EXTRA_RESULT, saveKeyResult);
+ getActivity().setResult(Activity.RESULT_OK, data);
+ getActivity().finish();
}
- };
- // Create a new Messenger for the communication back
- Messenger messenger = new Messenger(saveHandler);
- intent.putExtra(KeychainService.EXTRA_MESSENGER, messenger);
+ @Override
+ public void onCryptoOperationCancelled() {
- // show progress dialog
- saveHandler.showProgressDialog(
- getString(R.string.progress_uploading),
- ProgressDialog.STYLE_HORIZONTAL, false);
+ }
- // start service with intent
- getActivity().startService(intent);
+ @Override
+ public void onCryptoOperationError(ExportResult result) {
+
+ // TODO: upload operation needs a result!
+ // TODO: then combine these results (saveKeyResult and update op result)
+ //if (result.getResult() == OperationResultParcel.RESULT_OK) {
+ //Notify.create(getActivity(), R.string.key_send_success,
+ //Notify.Style.OK).show();
+
+ Intent data = new Intent();
+ data.putExtra(OperationResult.EXTRA_RESULT, saveKeyResult);
+ getActivity().setResult(Activity.RESULT_OK, data);
+ getActivity().finish();
+ }
+ };
+ mOperationHelper = new CryptoOperationHelper<>(this, callback, R.string.progress_uploading);
+ mOperationHelper.cryptoOperation();
}
}