diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2014-10-04 23:30:42 +0200 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2014-10-04 23:30:42 +0200 |
commit | f96f289891cb1e4e700ff010f15a592d7c5a0959 (patch) | |
tree | 5193677597200d304a2a3dbbb1f08089bb51d49c /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter | |
parent | 0a264bad28618139af0da128039a67ce85c66e53 (diff) | |
download | open-keychain-f96f289891cb1e4e700ff010f15a592d7c5a0959.tar.gz open-keychain-f96f289891cb1e4e700ff010f15a592d7c5a0959.tar.bz2 open-keychain-f96f289891cb1e4e700ff010f15a592d7c5a0959.zip |
merge key ids in getSelectedCertifyActions
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/MultiUserIdsAdapter.java | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/MultiUserIdsAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/MultiUserIdsAdapter.java index 2e1752dce..69e94bdbb 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/MultiUserIdsAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/MultiUserIdsAdapter.java @@ -20,6 +20,7 @@ package org.sufficientlysecure.keychain.ui.adapter; import android.content.Context; import android.database.Cursor; import android.os.Parcel; +import android.support.v4.util.LongSparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; @@ -33,6 +34,7 @@ import android.widget.TextView; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.pgp.KeyRing; +import org.sufficientlysecure.keychain.service.CertifyActionsParcel.CertifyAction; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import org.sufficientlysecure.keychain.util.Log; @@ -147,14 +149,34 @@ public class MultiUserIdsAdapter extends CursorAdapter { } - public ArrayList<String> getSelectedUserIds() { - ArrayList<String> result = new ArrayList<String>(); + public ArrayList<CertifyAction> getSelectedCertifyActions() { + LongSparseArray<CertifyAction> actions = new LongSparseArray<CertifyAction>(); for (int i = 0; i < mCheckStates.size(); i++) { if (mCheckStates.get(i)) { mCursor.moveToPosition(i); - result.add(mCursor.getString(0)); + + long keyId = mCursor.getLong(0); + byte[] data = mCursor.getBlob(1); + + Parcel p = Parcel.obtain(); + p.unmarshall(data, 0, data.length); + p.setDataPosition(0); + ArrayList<String> uids = p.createStringArrayList(); + p.recycle(); + + CertifyAction action = actions.get(keyId); + if (actions.get(keyId) == null) { + actions.put(keyId, new CertifyAction(keyId, uids)); + } else { + action.mUserIds.addAll(uids); + } } } + + ArrayList<CertifyAction> result = new ArrayList<CertifyAction>(actions.size()); + for (int i = 0; i < actions.size(); i++) { + result.add(actions.valueAt(i)); + } return result; } |