From b4b13b6afebef2b301d3fcdb1607de7927c14d8e Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sat, 31 Dec 2016 19:11:30 +0100 Subject: [PATCH] fix loading of multiple keys simultaneously --- .../ImportKeysOperationCallback.java | 13 ++++--- .../processing/ImportKeysResultListener.java | 2 +- .../remote/ui/RemoteImportKeysActivity.java | 2 +- .../keychain/ui/ImportKeysActivity.java | 4 +-- .../ui/adapter/ImportKeysAdapter.java | 35 ++++++++++--------- 5 files changed, 30 insertions(+), 26 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/ImportKeysOperationCallback.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/ImportKeysOperationCallback.java index d62077e8b..72a5cbfd9 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/ImportKeysOperationCallback.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/ImportKeysOperationCallback.java @@ -24,15 +24,18 @@ import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper; public class ImportKeysOperationCallback implements CryptoOperationHelper.Callback { - private ImportKeysResultListener mResultListener; - private ImportKeyringParcel mKeyringParcel; + private final ImportKeysResultListener mResultListener; + private final ImportKeyringParcel mKeyringParcel; + private final Integer mPosition; public ImportKeysOperationCallback( ImportKeysResultListener resultListener, - ImportKeyringParcel inputParcel + ImportKeyringParcel inputParcel, + Integer position ) { this.mResultListener = resultListener; this.mKeyringParcel = inputParcel; + this.mPosition = position; } @Override @@ -42,7 +45,7 @@ public class ImportKeysOperationCallback implements @Override public void onCryptoOperationSuccess(ImportKeyResult result) { - mResultListener.handleResult(result); + mResultListener.handleResult(result, mPosition); } @Override @@ -52,7 +55,7 @@ public class ImportKeysOperationCallback implements @Override public void onCryptoOperationError(ImportKeyResult result) { - mResultListener.handleResult(result); + mResultListener.handleResult(result, mPosition); } @Override diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/ImportKeysResultListener.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/ImportKeysResultListener.java index 52fe27b6e..5f470f5c0 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/ImportKeysResultListener.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/ImportKeysResultListener.java @@ -21,6 +21,6 @@ import org.sufficientlysecure.keychain.operations.results.ImportKeyResult; public interface ImportKeysResultListener { - void handleResult(ImportKeyResult result); + void handleResult(ImportKeyResult result, Integer position); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/RemoteImportKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/RemoteImportKeysActivity.java index 4d8113e3c..db95f412c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/RemoteImportKeysActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/RemoteImportKeysActivity.java @@ -37,7 +37,7 @@ public class RemoteImportKeysActivity extends ImportKeysActivity { } @Override - public void handleResult(ImportKeyResult result) { + public void handleResult(ImportKeyResult result, Integer position) { setResult(RESULT_OK, mPendingIntentData); finish(); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java index 2060dfef0..4b4463a30 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java @@ -359,13 +359,13 @@ public class ImportKeysActivity extends BaseActivity implements ImportKeysListen } ImportKeyringParcel inputParcel = new ImportKeyringParcel(null, null); - ImportKeysOperationCallback callback = new ImportKeysOperationCallback(this, inputParcel); + ImportKeysOperationCallback callback = new ImportKeysOperationCallback(this, inputParcel, null); mOpHelper = new CryptoOperationHelper<>(1, this, callback, R.string.progress_importing); mOpHelper.cryptoOperation(); } @Override - public void handleResult(ImportKeyResult result) { + public void handleResult(ImportKeyResult result, Integer position) { String intentAction = getIntent().getAction(); if (ImportKeysActivity.ACTION_IMPORT_KEY_FROM_KEYSERVER_AND_RETURN_RESULT.equals(intentAction) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java index 9db4b1874..62db6374e 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java @@ -64,7 +64,6 @@ public class ImportKeysAdapter extends RecyclerView.Adapter mData; private KeyState[] mKeyStates; - private int mCurrent; private ProviderHelper mProviderHelper; @@ -83,9 +82,9 @@ public class ImportKeysAdapter extends RecyclerView.Adapter 0; + keyState.mAlreadyPresent = true; + keyState.mVerified = keyRing.getVerified() > 0; } catch (ProviderHelper.NotFoundException | PgpKeyNotFoundException ignored) { } + + mKeyStates[i] = keyState; } // If there is only one key, get it automatically if (mData.size() == 1) { - mCurrent = 0; getKeyWithProgress(0, mData.get(0), true); } @@ -164,8 +164,6 @@ public class ImportKeysAdapter extends RecyclerView.Adapter(1, mActivity, cb, null); opHelper.cryptoOperation(); } @@ -242,7 +240,11 @@ public class ImportKeysAdapter extends RecyclerView.Adapter