From 857b15cbd5e84dc94350b4b2b1317c5ac411af38 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sun, 22 Jun 2014 13:32:07 +0200 Subject: use hashcode instead of keyid in import list (keyids may not be unique!) --- .../keychain/keyimport/ImportKeysListEntry.java | 10 ++++++++++ .../sufficientlysecure/keychain/ui/ImportKeysListFragment.java | 2 +- .../keychain/ui/adapter/ImportKeysListLoader.java | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java index 47265c3aa..0a49cb629 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java @@ -46,6 +46,7 @@ public class ImportKeysListEntry implements Serializable, Parcelable { private String mExtraData; private String mQuery; private String mOrigin; + private Integer mHashCode = null; private boolean mSelected; @@ -98,6 +99,13 @@ public class ImportKeysListEntry implements Serializable, Parcelable { } }; + public int hashCode() { + if (mHashCode != null) { + return mHashCode; + } + return super.hashCode(); + } + public String getKeyIdHex() { return mKeyIdHex; } @@ -240,6 +248,8 @@ public class ImportKeysListEntry implements Serializable, Parcelable { mSecretKey = ring.isSecret(); UncachedPublicKey key = ring.getPublicKey(); + mHashCode = key.hashCode(); + mPrimaryUserId = key.getPrimaryUserId(); mUserIds = key.getUnorderedUserIds(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java index d77e3a452..84fd513a0 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java @@ -79,7 +79,7 @@ public class ImportKeysListFragment extends ListFragment implements public ArrayList getSelectedData() { ArrayList result = new ArrayList(); for (ImportKeysListEntry entry : getSelectedEntries()) { - result.add(mCachedKeyData.get(entry.getKeyId())); + result.add(mCachedKeyData.get(entry.hashCode())); } return result; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListLoader.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListLoader.java index c2712e89e..99f959035 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListLoader.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListLoader.java @@ -138,7 +138,7 @@ public class ImportKeysListLoader for(UncachedKeyRing key : rings) { ImportKeysListEntry item = new ImportKeysListEntry(getContext(), key); mData.add(item); - mParcelableRings.put(key.getMasterKeyId(), new ParcelableKeyRing(key.getEncoded())); + mParcelableRings.put(item.hashCode(), new ParcelableKeyRing(key.getEncoded())); isEmpty = false; } } -- cgit v1.2.3