From 148867ae866eb7573d39131723a8b1c36d4d8a44 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Mon, 6 Jul 2015 17:18:56 +0200 Subject: actually disable non-enabled items in keyspinner (in keyadapter) (fixes #1366) --- .../keychain/ui/adapter/KeyAdapter.java | 34 ++++++++++++++-------- 1 file changed, 22 insertions(+), 12 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyAdapter.java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyAdapter.java index e545b007b..93838386c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyAdapter.java @@ -21,7 +21,6 @@ package org.sufficientlysecure.keychain.ui.adapter; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; import java.util.Date; import java.util.List; @@ -107,7 +106,7 @@ public class KeyAdapter extends CursorAdapter { mCreationDate = (TextView) view.findViewById(R.id.key_list_item_creation); } - public void setData(Context context, KeyItem item, Highlighter highlighter) { + public void setData(Context context, KeyItem item, Highlighter highlighter, boolean enabled) { mDisplayedItem = item; @@ -126,24 +125,28 @@ public class KeyAdapter extends CursorAdapter { } } + // sort of a hack: if this item isn't enabled, we make it clickable + // to intercept its click events + mView.setClickable(!enabled); + { // set edit button and status, specific by key type mMasterKeyId = item.mKeyId; + int textColor; + // Note: order is important! if (item.mIsRevoked) { KeyFormattingUtils .setStatusImage(context, mStatus, null, State.REVOKED, R.color.bg_gray); mStatus.setVisibility(View.VISIBLE); mSlinger.setVisibility(View.GONE); - mMainUserId.setTextColor(context.getResources().getColor(R.color.bg_gray)); - mMainUserIdRest.setTextColor(context.getResources().getColor(R.color.bg_gray)); + textColor = R.color.bg_gray; } else if (item.mIsExpired) { KeyFormattingUtils.setStatusImage(context, mStatus, null, State.EXPIRED, R.color.bg_gray); mStatus.setVisibility(View.VISIBLE); mSlinger.setVisibility(View.GONE); - mMainUserId.setTextColor(context.getResources().getColor(R.color.bg_gray)); - mMainUserIdRest.setTextColor(context.getResources().getColor(R.color.bg_gray)); + textColor = R.color.bg_gray; } else if (item.mIsSecret) { mStatus.setVisibility(View.GONE); if (mSlingerButton.hasOnClickListeners()) { @@ -154,8 +157,7 @@ public class KeyAdapter extends CursorAdapter { } else { mSlinger.setVisibility(View.GONE); } - mMainUserId.setTextColor(context.getResources().getColor(R.color.black)); - mMainUserIdRest.setTextColor(context.getResources().getColor(R.color.black)); + textColor = R.color.black; } else { // this is a public key - show if it's verified if (item.mIsVerified) { @@ -166,10 +168,16 @@ public class KeyAdapter extends CursorAdapter { mStatus.setVisibility(View.VISIBLE); } mSlinger.setVisibility(View.GONE); - mMainUserId.setTextColor(context.getResources().getColor(R.color.black)); - mMainUserIdRest.setTextColor(context.getResources().getColor(R.color.black)); + textColor = R.color.black; + } + + if (!enabled) { + textColor = R.color.bg_gray; } + mMainUserId.setTextColor(context.getResources().getColor(textColor)); + mMainUserIdRest.setTextColor(context.getResources().getColor(textColor)); + if (item.mHasDuplicate) { String dateTime = DateUtils.formatDateTime(context, item.mCreation.getTime(), @@ -205,9 +213,11 @@ public class KeyAdapter extends CursorAdapter { @Override public void bindView(View view, Context context, Cursor cursor) { Highlighter highlighter = new Highlighter(context, mQuery); - KeyItemViewHolder h = (KeyItemViewHolder) view.getTag(); KeyItem item = new KeyItem(cursor); - h.setData(context, item, highlighter); + boolean isEnabled = isEnabled(cursor); + + KeyItemViewHolder h = (KeyItemViewHolder) view.getTag(); + h.setData(context, item, highlighter, isEnabled); } public boolean isSecretAvailable(int id) { -- cgit v1.2.3