diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java index 604a5a027..019c5568a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java @@ -173,7 +173,7 @@ public class CachedPublicKeyRing extends KeyRing { Object data = mProviderHelper.getGenericData(mUri, KeychainContract.KeyRings.VERIFIED, ProviderHelper.FIELD_TYPE_INTEGER); - return (Integer) data; + return ((Long) data).intValue(); } catch(ProviderHelper.NotFoundException e) { throw new PgpKeyNotFoundException(e); } 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 38a602fbf..6f45707c8 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 @@ -37,7 +37,10 @@ import org.sufficientlysecure.keychain.keyimport.processing.ImportKeysResultList import org.sufficientlysecure.keychain.operations.ImportOperation; import org.sufficientlysecure.keychain.operations.results.ImportKeyResult; import org.sufficientlysecure.keychain.pgp.CanonicalizedKeyRing; +import org.sufficientlysecure.keychain.pgp.KeyRing; +import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException; import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings; +import org.sufficientlysecure.keychain.provider.ProviderHelper; import org.sufficientlysecure.keychain.service.ImportKeyringParcel; import org.sufficientlysecure.keychain.ui.ViewKeyActivity; import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper; @@ -58,23 +61,41 @@ public class ImportKeysAdapter extends RecyclerView.Adapter mData; - private KeyState[] mKeyStates; private int mCurrent; + private ProviderHelper mProviderHelper; + public ImportKeysAdapter(FragmentActivity activity, ImportKeysListener listener, boolean nonInteractive) { - this.mActivity = activity; - this.mListener = listener; - this.mNonInteractive = nonInteractive; + mActivity = activity; + mListener = listener; + mNonInteractive = nonInteractive; + + mProviderHelper = new ProviderHelper(activity); } public void setData(List data) { - this.mData = data; - this.mKeyStates = new KeyState[data.size()]; + mData = data; + + mKeyStates = new KeyState[data.size()]; for (int i = 0; i < mKeyStates.length; i++) { mKeyStates[i] = new KeyState(); + + ImportKeysListEntry entry = mData.get(i); + long keyId = KeyFormattingUtils.convertKeyIdHexToKeyId(entry.getKeyIdHex()); + try { + KeyRing keyRing; + if (entry.isSecretKey()) { + keyRing = mProviderHelper.getCanonicalizedSecretKeyRing(keyId); + } else { + keyRing = mProviderHelper.getCachedPublicKeyRing(keyId); + } + mKeyStates[i].mAlreadyPresent = true; + mKeyStates[i].mVerified = keyRing.getVerified() > 0; + } catch (ProviderHelper.NotFoundException | PgpKeyNotFoundException ignored) { + } } // If there is only one key, get it automatically @@ -259,6 +280,9 @@ public class ImportKeysAdapter extends RecyclerView.Adapter - - +