From f96f289891cb1e4e700ff010f15a592d7c5a0959 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sat, 4 Oct 2014 23:30:42 +0200 Subject: merge key ids in getSelectedCertifyActions --- .../keychain/ui/adapter/MultiUserIdsAdapter.java | 28 +++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/MultiUserIdsAdapter.java') 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 getSelectedUserIds() { - ArrayList result = new ArrayList(); + public ArrayList getSelectedCertifyActions() { + LongSparseArray actions = new LongSparseArray(); 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 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 result = new ArrayList(actions.size()); + for (int i = 0; i < actions.size(); i++) { + result.add(actions.valueAt(i)); + } return result; } -- cgit v1.2.3