From e873bac8803c0cf4f086d278a3ed1fd847cfb425 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sun, 15 Mar 2015 16:24:06 +0100 Subject: Fixes for selection of certify key --- .../keychain/ui/widget/CertifyKeySpinner.java | 25 +++++++++++++++------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java index fb6b84f58..460163a47 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java @@ -93,22 +93,31 @@ public class CertifyKeySpinner extends KeySpinner { mIndexIsRevoked = data.getColumnIndex(KeychainContract.KeyRings.IS_REVOKED); mIndexIsExpired = data.getColumnIndex(KeychainContract.KeyRings.IS_EXPIRED); - // If there is more than one choice, pick a key - if (mAdapter.getCount() >= 2) { + // If: + // - no key has been pre-selected (e.g. by SageSlinger) + // - there are actually keys (not just "none" entry) + // Then: + // - select key that is capable of certifying, but only if there is only one key capable of it + if (mSelectedKeyId == Constants.key.none && mAdapter.getCount() > 1) { // preselect if key can certify - if (data.moveToPosition(0)) { - do { - if (!data.isNull(mIndexHasCertify)) { - setSelection(data.getPosition() + 1); - break; + int selection = -1; + while (data.moveToNext()) { + if (!data.isNull(mIndexHasCertify)) { + if (selection == -1) { + selection = data.getPosition() + 1; + } else { + // if selection is already set, we have more than one certify key! + // get back to "none"! + selection = 0; } } - while (data.moveToNext()); } + setSelection(selection); } } } + @Override boolean setStatus(Context context, Cursor cursor, ImageView statusView) { if (cursor.getInt(mIndexIsRevoked) != 0) { -- cgit v1.2.3