diff options
author | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-03-15 16:24:06 +0100 |
---|---|---|
committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-03-15 16:24:06 +0100 |
commit | e873bac8803c0cf4f086d278a3ed1fd847cfb425 (patch) | |
tree | 5cb0f4a721b73d0a5088c7e90baa568a6e3bc37c /OpenKeychain/src/main | |
parent | ff60e80d42bb3d923c135c9a9b8135c61810b10a (diff) | |
download | open-keychain-e873bac8803c0cf4f086d278a3ed1fd847cfb425.tar.gz open-keychain-e873bac8803c0cf4f086d278a3ed1fd847cfb425.tar.bz2 open-keychain-e873bac8803c0cf4f086d278a3ed1fd847cfb425.zip |
Fixes for selection of certify key
Diffstat (limited to 'OpenKeychain/src/main')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java | 25 | ||||
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java | 6 |
2 files changed, 21 insertions, 10 deletions
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) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java index ab5b02301..226588aaa 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/KeySpinner.java @@ -55,7 +55,7 @@ public abstract class KeySpinner extends TintSpinner implements LoaderManager.Lo public void onKeyChanged(long masterKeyId); } - protected long mSelectedKeyId; + protected long mSelectedKeyId = Constants.key.none; protected SelectKeyAdapter mAdapter = new SelectKeyAdapter(); protected OnKeyChangedListener mListener; @@ -227,7 +227,9 @@ public abstract class KeySpinner extends TintSpinner implements LoaderManager.Lo mIndexUserId = newCursor.getColumnIndex(KeychainContract.KeyRings.USER_ID); mIndexMasterKeyId = newCursor.getColumnIndex(KeychainContract.KeyRings.MASTER_KEY_ID); mIndexCreationDate = newCursor.getColumnIndex(KeychainContract.KeyRings.CREATION); - if (newCursor.moveToFirst()) { + + // pre-select key if mSelectedKeyId is given + if (mSelectedKeyId != Constants.key.none && newCursor.moveToFirst()) { do { if (newCursor.getLong(mIndexMasterKeyId) == mSelectedKeyId) { setSelection(newCursor.getPosition() + 1); |