From 64cec07b163f3673423b12c8cdf600300086fe08 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Tue, 7 Jul 2015 17:16:07 +0200 Subject: fix handling of progress dialog creation in CryptoOperationFragment (fixes #1407) --- .../keychain/ui/DecryptListFragment.java | 10 ++-- .../keychain/ui/ViewKeyActivity.java | 65 +++++++++++----------- .../keychain/ui/ViewKeyYubiKeyFragment.java | 4 ++ .../ui/base/CachingCryptoOperationFragment.java | 1 + .../keychain/ui/base/CryptoOperationFragment.java | 12 ++-- .../keychain/ui/base/CryptoOperationHelper.java | 24 ++------ 6 files changed, 52 insertions(+), 64 deletions(-) (limited to 'OpenKeychain/src') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java index db2841488..da6dfcbd0 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java @@ -65,7 +65,6 @@ import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult; import org.sufficientlysecure.keychain.pgp.PgpDecryptVerifyInputParcel; import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings; import org.sufficientlysecure.keychain.provider.TemporaryStorageProvider; -import org.sufficientlysecure.keychain.service.input.CryptoInputParcel; // this import NEEDS to be above the ViewModel one, or it won't compile! (as of 06/06/15) import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils.StatusHolder; import org.sufficientlysecure.keychain.ui.DecryptListFragment.DecryptFilesAdapter.ViewModel; @@ -111,6 +110,10 @@ public class DecryptListFragment return frag; } + public DecryptListFragment() { + super(null); + } + /** * Inflate the layout for this fragment */ @@ -248,11 +251,6 @@ public class DecryptListFragment } } - @Override - protected void cryptoOperation(CryptoInputParcel cryptoInput) { - super.cryptoOperation(cryptoInput, false); - } - @Override public boolean onCryptoSetProgress(String msg, int progress, int max) { mAdapter.setProgress(mCurrentInputUri, progress, max, msg); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java index 2f89818d1..0843d3e20 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java @@ -652,38 +652,6 @@ public class ViewKeyActivity extends BaseNfcActivity implements } } - private void updateFromKeyserver(Uri dataUri, ProviderHelper providerHelper) - throws ProviderHelper.NotFoundException { - - mIsRefreshing = true; - mRefreshItem.setEnabled(false); - mRefreshItem.setActionView(mRefresh); - mRefresh.startAnimation(mRotate); - - byte[] blob = (byte[]) providerHelper.getGenericData( - KeychainContract.KeyRings.buildUnifiedKeyRingUri(dataUri), - KeychainContract.Keys.FINGERPRINT, ProviderHelper.FIELD_TYPE_BLOB); - String fingerprint = KeyFormattingUtils.convertFingerprintToHex(blob); - - ParcelableKeyRing keyEntry = new ParcelableKeyRing(fingerprint, null, null); - ArrayList entries = new ArrayList<>(); - entries.add(keyEntry); - mKeyList = entries; - - // search config - { - Preferences prefs = Preferences.getPreferences(this); - Preferences.CloudSearchPrefs cloudPrefs = - new Preferences.CloudSearchPrefs(true, true, prefs.getPreferredKeyserver()); - mKeyserver = cloudPrefs.keyserver; - } - - mOperationHelper = new CryptoOperationHelper<>( - this, this, R.string.progress_importing); - - mOperationHelper.cryptoOperation(); - } - private void editKey(Uri dataUri) { Intent editIntent = new Intent(this, EditKeyActivity.class); editIntent.setData(KeychainContract.KeyRingData.buildSecretKeyRingUri(dataUri)); @@ -971,6 +939,37 @@ public class ViewKeyActivity extends BaseNfcActivity implements // CryptoOperationHelper.Callback functions + + private void updateFromKeyserver(Uri dataUri, ProviderHelper providerHelper) + throws ProviderHelper.NotFoundException { + + mIsRefreshing = true; + mRefreshItem.setEnabled(false); + mRefreshItem.setActionView(mRefresh); + mRefresh.startAnimation(mRotate); + + byte[] blob = (byte[]) providerHelper.getGenericData( + KeychainContract.KeyRings.buildUnifiedKeyRingUri(dataUri), + KeychainContract.Keys.FINGERPRINT, ProviderHelper.FIELD_TYPE_BLOB); + String fingerprint = KeyFormattingUtils.convertFingerprintToHex(blob); + + ParcelableKeyRing keyEntry = new ParcelableKeyRing(fingerprint, null, null); + ArrayList entries = new ArrayList<>(); + entries.add(keyEntry); + mKeyList = entries; + + // search config + { + Preferences prefs = Preferences.getPreferences(this); + Preferences.CloudSearchPrefs cloudPrefs = + new Preferences.CloudSearchPrefs(true, true, prefs.getPreferredKeyserver()); + mKeyserver = cloudPrefs.keyserver; + } + + mOperationHelper = new CryptoOperationHelper<>(this, this, null); + mOperationHelper.cryptoOperation(); + } + @Override public ImportKeyringParcel createOperationInput() { return new ImportKeyringParcel(mKeyList, mKeyserver); @@ -995,6 +994,6 @@ public class ViewKeyActivity extends BaseNfcActivity implements @Override public boolean onCryptoSetProgress(String msg, int progress, int max) { - return false; + return true; } } \ No newline at end of file diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyYubiKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyYubiKeyFragment.java index c2158650b..116d082d0 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyYubiKeyFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyYubiKeyFragment.java @@ -75,6 +75,10 @@ public class ViewKeyYubiKeyFragment return frag; } + public ViewKeyYubiKeyFragment() { + super(R.string.progress_processing); + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 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 95bc4adcb..38b7075f2 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 @@ -4,6 +4,7 @@ package org.sufficientlysecure.keychain.ui.base; import android.os.Bundle; import android.os.Parcelable; +import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.operations.results.OperationResult; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationFragment.java index 2ab0d5fac..bb0af5830 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationFragment.java @@ -23,6 +23,7 @@ import android.os.Parcelable; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; +import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.operations.results.OperationResult; import org.sufficientlysecure.keychain.service.KeychainService; import org.sufficientlysecure.keychain.service.input.CryptoInputParcel; @@ -50,9 +51,12 @@ public abstract class CryptoOperationFragment mOperationHelper; - public CryptoOperationFragment() { + public CryptoOperationFragment(Integer initialProgressMsg) { + mOperationHelper = new CryptoOperationHelper<>(this, this, initialProgressMsg); + } - mOperationHelper = new CryptoOperationHelper<>(this, this); + public CryptoOperationFragment() { + mOperationHelper = new CryptoOperationHelper<>(this, this, R.string.progress_processing); } @Override @@ -76,10 +80,6 @@ public abstract class CryptoOperationFragment callback, int progressMessageString) { + public CryptoOperationHelper(FragmentActivity activity, Callback callback, Integer progressMessageString) { mActivity = activity; mUseFragment = false; mCallback = callback; @@ -95,23 +95,13 @@ public class CryptoOperationHelper callback, int progressMessageString) { + public CryptoOperationHelper(Fragment fragment, Callback callback, Integer progressMessageString) { mFragment = fragment; mUseFragment = true; mProgressMessageResource = progressMessageString; mCallback = callback; } - /** - * if OperationHelper is being integrated into a fragment with default message for the progress dialog - */ - public CryptoOperationHelper(Fragment fragment, Callback callback) { - mFragment = fragment; - mUseFragment = true; - mProgressMessageResource = R.string.progress_building_key; - mCallback = callback; - } - public void setProgressMessageResource(int id) { mProgressMessageResource = id; } @@ -248,7 +238,7 @@ public class CryptoOperationHelper