fix handling of progress dialog creation in CryptoOperationFragment (fixes #1407)
This commit is contained in:
@@ -65,7 +65,6 @@ import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult;
|
|||||||
import org.sufficientlysecure.keychain.pgp.PgpDecryptVerifyInputParcel;
|
import org.sufficientlysecure.keychain.pgp.PgpDecryptVerifyInputParcel;
|
||||||
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
|
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
|
||||||
import org.sufficientlysecure.keychain.provider.TemporaryStorageProvider;
|
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)
|
// 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.util.KeyFormattingUtils.StatusHolder;
|
||||||
import org.sufficientlysecure.keychain.ui.DecryptListFragment.DecryptFilesAdapter.ViewModel;
|
import org.sufficientlysecure.keychain.ui.DecryptListFragment.DecryptFilesAdapter.ViewModel;
|
||||||
@@ -111,6 +110,10 @@ public class DecryptListFragment
|
|||||||
return frag;
|
return frag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DecryptListFragment() {
|
||||||
|
super(null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inflate the layout for this fragment
|
* Inflate the layout for this fragment
|
||||||
*/
|
*/
|
||||||
@@ -248,11 +251,6 @@ public class DecryptListFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void cryptoOperation(CryptoInputParcel cryptoInput) {
|
|
||||||
super.cryptoOperation(cryptoInput, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCryptoSetProgress(String msg, int progress, int max) {
|
public boolean onCryptoSetProgress(String msg, int progress, int max) {
|
||||||
mAdapter.setProgress(mCurrentInputUri, progress, max, msg);
|
mAdapter.setProgress(mCurrentInputUri, progress, max, msg);
|
||||||
|
|||||||
@@ -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<ParcelableKeyRing> 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) {
|
private void editKey(Uri dataUri) {
|
||||||
Intent editIntent = new Intent(this, EditKeyActivity.class);
|
Intent editIntent = new Intent(this, EditKeyActivity.class);
|
||||||
editIntent.setData(KeychainContract.KeyRingData.buildSecretKeyRingUri(dataUri));
|
editIntent.setData(KeychainContract.KeyRingData.buildSecretKeyRingUri(dataUri));
|
||||||
@@ -971,6 +939,37 @@ public class ViewKeyActivity extends BaseNfcActivity implements
|
|||||||
|
|
||||||
// CryptoOperationHelper.Callback functions
|
// 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<ParcelableKeyRing> 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
|
@Override
|
||||||
public ImportKeyringParcel createOperationInput() {
|
public ImportKeyringParcel createOperationInput() {
|
||||||
return new ImportKeyringParcel(mKeyList, mKeyserver);
|
return new ImportKeyringParcel(mKeyList, mKeyserver);
|
||||||
@@ -995,6 +994,6 @@ public class ViewKeyActivity extends BaseNfcActivity implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCryptoSetProgress(String msg, int progress, int max) {
|
public boolean onCryptoSetProgress(String msg, int progress, int max) {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -75,6 +75,10 @@ public class ViewKeyYubiKeyFragment
|
|||||||
return frag;
|
return frag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ViewKeyYubiKeyFragment() {
|
||||||
|
super(R.string.progress_processing);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ package org.sufficientlysecure.keychain.ui.base;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
|
|
||||||
|
import org.sufficientlysecure.keychain.R;
|
||||||
import org.sufficientlysecure.keychain.operations.results.OperationResult;
|
import org.sufficientlysecure.keychain.operations.results.OperationResult;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import android.os.Parcelable;
|
|||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
|
|
||||||
|
import org.sufficientlysecure.keychain.R;
|
||||||
import org.sufficientlysecure.keychain.operations.results.OperationResult;
|
import org.sufficientlysecure.keychain.operations.results.OperationResult;
|
||||||
import org.sufficientlysecure.keychain.service.KeychainService;
|
import org.sufficientlysecure.keychain.service.KeychainService;
|
||||||
import org.sufficientlysecure.keychain.service.input.CryptoInputParcel;
|
import org.sufficientlysecure.keychain.service.input.CryptoInputParcel;
|
||||||
@@ -50,9 +51,12 @@ public abstract class CryptoOperationFragment<T extends Parcelable, S extends Op
|
|||||||
|
|
||||||
final private CryptoOperationHelper<T, S> mOperationHelper;
|
final private CryptoOperationHelper<T, S> 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
|
@Override
|
||||||
@@ -76,10 +80,6 @@ public abstract class CryptoOperationFragment<T extends Parcelable, S extends Op
|
|||||||
mOperationHelper.cryptoOperation(cryptoInput);
|
mOperationHelper.cryptoOperation(cryptoInput);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void cryptoOperation(CryptoInputParcel cryptoInput, boolean showProgress) {
|
|
||||||
mOperationHelper.cryptoOperation(cryptoInput, showProgress);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override @Nullable
|
@Override @Nullable
|
||||||
/** Creates input for the crypto operation. Called internally after the
|
/** Creates input for the crypto operation. Called internally after the
|
||||||
* crypto operation is started by a call to cryptoOperation(). Silently
|
* crypto operation is started by a call to cryptoOperation(). Silently
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
|
|||||||
// otherwise all CryptoOperationHandlers may respond to the same onActivityResult
|
// otherwise all CryptoOperationHandlers may respond to the same onActivityResult
|
||||||
private int mRequestedCode = -1;
|
private int mRequestedCode = -1;
|
||||||
|
|
||||||
private int mProgressMessageResource;
|
private Integer mProgressMessageResource;
|
||||||
|
|
||||||
private FragmentActivity mActivity;
|
private FragmentActivity mActivity;
|
||||||
private Fragment mFragment;
|
private Fragment mFragment;
|
||||||
@@ -85,7 +85,7 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
|
|||||||
/**
|
/**
|
||||||
* If OperationHelper is being integrated into an activity
|
* If OperationHelper is being integrated into an activity
|
||||||
*/
|
*/
|
||||||
public CryptoOperationHelper(FragmentActivity activity, Callback<T, S> callback, int progressMessageString) {
|
public CryptoOperationHelper(FragmentActivity activity, Callback<T, S> callback, Integer progressMessageString) {
|
||||||
mActivity = activity;
|
mActivity = activity;
|
||||||
mUseFragment = false;
|
mUseFragment = false;
|
||||||
mCallback = callback;
|
mCallback = callback;
|
||||||
@@ -95,23 +95,13 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
|
|||||||
/**
|
/**
|
||||||
* if OperationHelper is being integrated into a fragment
|
* if OperationHelper is being integrated into a fragment
|
||||||
*/
|
*/
|
||||||
public CryptoOperationHelper(Fragment fragment, Callback<T, S> callback, int progressMessageString) {
|
public CryptoOperationHelper(Fragment fragment, Callback<T, S> callback, Integer progressMessageString) {
|
||||||
mFragment = fragment;
|
mFragment = fragment;
|
||||||
mUseFragment = true;
|
mUseFragment = true;
|
||||||
mProgressMessageResource = progressMessageString;
|
mProgressMessageResource = progressMessageString;
|
||||||
mCallback = callback;
|
mCallback = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* if OperationHelper is being integrated into a fragment with default message for the progress dialog
|
|
||||||
*/
|
|
||||||
public CryptoOperationHelper(Fragment fragment, Callback<T, S> callback) {
|
|
||||||
mFragment = fragment;
|
|
||||||
mUseFragment = true;
|
|
||||||
mProgressMessageResource = R.string.progress_building_key;
|
|
||||||
mCallback = callback;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProgressMessageResource(int id) {
|
public void setProgressMessageResource(int id) {
|
||||||
mProgressMessageResource = id;
|
mProgressMessageResource = id;
|
||||||
}
|
}
|
||||||
@@ -248,7 +238,7 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cryptoOperation(final CryptoInputParcel cryptoInput, boolean showProgress) {
|
public void cryptoOperation(final CryptoInputParcel cryptoInput) {
|
||||||
|
|
||||||
FragmentActivity activity = mUseFragment ? mFragment.getActivity() : mActivity;
|
FragmentActivity activity = mUseFragment ? mFragment.getActivity() : mActivity;
|
||||||
|
|
||||||
@@ -297,7 +287,7 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
|
|||||||
Messenger messenger = new Messenger(saveHandler);
|
Messenger messenger = new Messenger(saveHandler);
|
||||||
intent.putExtra(KeychainService.EXTRA_MESSENGER, messenger);
|
intent.putExtra(KeychainService.EXTRA_MESSENGER, messenger);
|
||||||
|
|
||||||
if (showProgress) {
|
if (mProgressMessageResource != null) {
|
||||||
saveHandler.showProgressDialog(
|
saveHandler.showProgressDialog(
|
||||||
activity.getString(mProgressMessageResource),
|
activity.getString(mProgressMessageResource),
|
||||||
ProgressDialog.STYLE_HORIZONTAL, false);
|
ProgressDialog.STYLE_HORIZONTAL, false);
|
||||||
@@ -306,10 +296,6 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
|
|||||||
activity.startService(intent);
|
activity.startService(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cryptoOperation(CryptoInputParcel cryptoInputParcel) {
|
|
||||||
cryptoOperation(cryptoInputParcel, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void cryptoOperation() {
|
public void cryptoOperation() {
|
||||||
cryptoOperation(new CryptoInputParcel());
|
cryptoOperation(new CryptoInputParcel());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user