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-05-30 00:17:00 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2015-05-30 00:17:00 +0200
commitb9563ff2ef881396f1b5b3c46436165fefd63464 (patch)
treefc0fcda6d6a30df9fdea8a64f865e1c034ece43f /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CachingCryptoOperationFragment.java
parent1406eec2dc0a1db72e7f69cd14642f4324eacf63 (diff)
downloadopen-keychain-b9563ff2ef881396f1b5b3c46436165fefd63464.tar.gz
open-keychain-b9563ff2ef881396f1b5b3c46436165fefd63464.tar.bz2
open-keychain-b9563ff2ef881396f1b5b3c46436165fefd63464.zip
externalize caching functionality from CertifyKeyFragment
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.java64
1 files changed, 64 insertions, 0 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
new file mode 100644
index 000000000..d0b6f502f
--- /dev/null
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CachingCryptoOperationFragment.java
@@ -0,0 +1,64 @@
+package org.sufficientlysecure.keychain.ui.base;
+
+
+import android.os.Bundle;
+import android.os.Message;
+import android.os.Parcelable;
+
+import org.sufficientlysecure.keychain.service.ServiceProgressHandler;
+import org.sufficientlysecure.keychain.service.input.CryptoInputParcel;
+
+
+public abstract class CachingCryptoOperationFragment <T extends Parcelable> extends CryptoOperationFragment {
+
+ public static final String ARG_CACHED_ACTIONS = "cached_actions";
+
+ private T mCachedActionsParcel;
+
+ @Override
+ protected void cryptoOperation(CryptoInputParcel cryptoInput) {
+ cryptoOperation(cryptoInput, mCachedActionsParcel);
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+
+ outState.putParcelable(ARG_CACHED_ACTIONS, mCachedActionsParcel);
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ if (savedInstanceState != null) {
+ mCachedActionsParcel = savedInstanceState.getParcelable(ARG_CACHED_ACTIONS);
+ }
+ }
+
+ @Override
+ public boolean handlePendingMessage(Message message) {
+ // see if it's an InputPendingResult, and if so don't care
+ if (super.handlePendingMessage(message)) {
+ return true;
+ }
+
+ // if it's a non-input-pending OKAY message, always clear the cached actions parcel
+ if (message.arg1 == ServiceProgressHandler.MessageStatus.OKAY.ordinal()) {
+ mCachedActionsParcel = null;
+ }
+
+ return false;
+ }
+
+ protected abstract void cryptoOperation(CryptoInputParcel cryptoInput, T cachedActionsParcel);
+
+ protected void cacheActionsParcel(T cachedActionsParcel) {
+ mCachedActionsParcel = cachedActionsParcel;
+ }
+
+ protected void onCryptoOperationCancelled() {
+ mCachedActionsParcel = null;
+ }
+
+}