aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CachingCryptoOperationFragment.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-06-10 15:43:00 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2015-06-10 15:45:10 +0200
commit61dce088c25ea68cbff59b5d8b1af80b39d5cc59 (patch)
tree8d2756bd493e005d96dc31f88b88fe4351fb5f43 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CachingCryptoOperationFragment.java
parent9b6416943b49d620c73bd24fb334ec338d95c5a8 (diff)
downloadopen-keychain-61dce088c25ea68cbff59b5d8b1af80b39d5cc59.tar.gz
open-keychain-61dce088c25ea68cbff59b5d8b1af80b39d5cc59.tar.bz2
open-keychain-61dce088c25ea68cbff59b5d8b1af80b39d5cc59.zip
backport CryptoOperationFragment changes without eventbus
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CachingCryptoOperationFragment.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CachingCryptoOperationFragment.java37
1 files changed, 32 insertions, 5 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CachingCryptoOperationFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CachingCryptoOperationFragment.java
index e8e8c5363..8ed4cbc87 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CachingCryptoOperationFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CachingCryptoOperationFragment.java
@@ -5,11 +5,13 @@ import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
+import android.os.Messenger;
import android.os.Parcelable;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.operations.results.OperationResult;
import org.sufficientlysecure.keychain.service.KeychainNewService;
+import org.sufficientlysecure.keychain.service.KeychainService;
import org.sufficientlysecure.keychain.service.ServiceProgressHandler;
import org.sufficientlysecure.keychain.service.input.CryptoInputParcel;
@@ -55,6 +57,7 @@ public abstract class CachingCryptoOperationFragment <T extends Parcelable, S ex
// Notify was created by createCryptoInput.
return;
}
+
}
// Send all information needed to service to edit key in other thread
@@ -63,12 +66,36 @@ public abstract class CachingCryptoOperationFragment <T extends Parcelable, S ex
intent.putExtra(KeychainNewService.EXTRA_OPERATION_INPUT, mCachedActionsParcel);
intent.putExtra(KeychainNewService.EXTRA_CRYPTO_INPUT, cryptoInput);
- showProgressFragment(
- getString(R.string.progress_start),
- ProgressDialog.STYLE_HORIZONTAL,
- false);
+ ServiceProgressHandler saveHandler = new ServiceProgressHandler(getActivity()) {
+ @Override
+ public void handleMessage(Message message) {
+ // handle messages by standard KeychainIntentServiceHandler first
+ super.handleMessage(message);
+
+ if (message.arg1 == MessageStatus.OKAY.ordinal()) {
+
+ // get returned data bundle
+ Bundle returnData = message.getData();
+ if (returnData == null) {
+ return;
+ }
+
+ final OperationResult result =
+ returnData.getParcelable(OperationResult.EXTRA_RESULT);
+
+ onHandleResult(result);
+ }
+ }
+ };
+
+ // Create a new Messenger for the communication back
+ Messenger messenger = new Messenger(saveHandler);
+ intent.putExtra(KeychainService.EXTRA_MESSENGER, messenger);
+
+ saveHandler.showProgressDialog(
+ getString(R.string.progress_building_key),
+ ProgressDialog.STYLE_HORIZONTAL, false);
- // start service with intent
getActivity().startService(intent);
}