From 3b7f21d98a667abec9cb9ddf855893b3a1ffdb8b Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Tue, 10 Mar 2015 04:27:40 +0100 Subject: add expand item to linked id list --- .../keychain/ui/adapter/LinkedIdsAdapter.java | 40 ++++++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/LinkedIdsAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/LinkedIdsAdapter.java index e0f28efb8..c5bb58c3d 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/LinkedIdsAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/LinkedIdsAdapter.java @@ -26,6 +26,7 @@ import android.support.v4.content.CursorLoader; import android.util.Log; import android.view.LayoutInflater; import android.view.View; +import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; @@ -50,19 +51,36 @@ public class LinkedIdsAdapter extends UserAttributesAdapter { protected LayoutInflater mInflater; WeakHashMap mLinkedIdentityCache = new WeakHashMap<>(); - public LinkedIdsAdapter(Context context, Cursor c, int flags, boolean showCertification) { + private Cursor mUnfilteredCursor; + + private TextView mExpander; + + public LinkedIdsAdapter(Context context, Cursor c, int flags, + boolean showCertification, TextView expander) { super(context, c, flags); mInflater = LayoutInflater.from(context); mShowCertification = showCertification; + + if (expander != null) { + mExpander = expander; + mExpander.setVisibility(View.GONE); + mExpander.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + showUnfiltered(); + } + }); + } } @Override public Cursor swapCursor(Cursor cursor) { if (cursor == null) { + mUnfilteredCursor = null; return super.swapCursor(null); } - - Cursor filteredCursor = new FilterCursorWrapper(cursor) { + mUnfilteredCursor = cursor; + FilterCursorWrapper filteredCursor = new FilterCursorWrapper(cursor) { @Override public boolean isVisible(Cursor cursor) { RawLinkedIdentity id = getItemAtPosition(cursor); @@ -70,9 +88,25 @@ public class LinkedIdsAdapter extends UserAttributesAdapter { } }; + if (mExpander != null) { + int hidden = filteredCursor.getHiddenCount(); + if (hidden == 0) { + mExpander.setVisibility(View.GONE); + } else { + mExpander.setVisibility(View.VISIBLE); + mExpander.setText(mContext.getResources().getQuantityString( + R.plurals.linked_id_expand, hidden)); + } + } + return super.swapCursor(filteredCursor); } + private void showUnfiltered() { + mExpander.setVisibility(View.GONE); + super.swapCursor(mUnfilteredCursor); + } + @Override public void bindView(View view, Context context, Cursor cursor) { -- cgit v1.2.3