diff options
author | Ekin Oguz <ekinoguz@google.com> | 2016-06-17 17:34:08 -0700 |
---|---|---|
committer | Ekin Oguz <ekinoguz@google.com> | 2016-06-20 10:58:51 -0700 |
commit | 1163a27340e6b18ef630fee4dd07c74c579c697c (patch) | |
tree | f7dbbc576541973021c800e42f892298b77769c6 /src/com | |
parent | 5ae8a7a2389589bf9b139a019460405ab20ea5ac (diff) | |
download | chips-1163a27340e6b18ef630fee4dd07c74c579c697c.tar.gz |
Take mNoChip into account for recipient callbacks.
When there are more than 50 recipients, RecipientEditTextView enters
into noChip mode, where all the recipients are converted into editable
texts. In this case, adding a new recipient or deleting a recipient
should not cause onRecipientChipAdded() or onRecipientChipDeleted()
callbacks to be called.
Also expose whether RecipientEditTextView is in noChip mode or not to
public.
BUG: 29234045
Change-Id: Ib7879b62231af49bd74d6ee2d5442d94f0fd8ef5
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/ex/chips/RecipientEditTextView.java | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/src/com/android/ex/chips/RecipientEditTextView.java b/src/com/android/ex/chips/RecipientEditTextView.java index bf0cf9a..bfd2e58 100644 --- a/src/com/android/ex/chips/RecipientEditTextView.java +++ b/src/com/android/ex/chips/RecipientEditTextView.java @@ -103,8 +103,6 @@ import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; /** * RecipientEditTextView is an auto complete text view for use with applications @@ -187,7 +185,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements private int mPendingChipsCount = 0; private int mCheckedItem; - private boolean mNoChips = false; + private boolean mNoChipMode = false; private boolean mShouldShrink = true; private boolean mRequiresShrinkWhenNotGone = false; @@ -1116,6 +1114,11 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements return mChipHeight; } + /** Returns whether view is in no-chip or chip mode. */ + public boolean isNoChipMode() { + return mNoChipMode; + } + /** * Set whether to shrink the recipients field such that at most * one line of recipients chips are shown when the field loses @@ -1206,7 +1209,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements } sanitizeEnd(); } else { - mNoChips = true; + mNoChipMode = true; } if (mTemporaryRecipients != null && mTemporaryRecipients.size() > 0 @@ -1299,7 +1302,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements if (entry != null) { DrawableRecipientChip chip = null; try { - if (!mNoChips) { + if (!mNoChipMode) { chip = visible ? constructChipSpan(entry) : new InvisibleRecipientChip(entry); } } catch (NullPointerException e) { @@ -1596,11 +1599,11 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements } private boolean shouldCreateChip(int start, int end) { - return !mNoChips && hasFocus() && enoughToFilter() && !alreadyHasChip(start, end); + return !mNoChipMode && hasFocus() && enoughToFilter() && !alreadyHasChip(start, end); } private boolean alreadyHasChip(int start, int end) { - if (mNoChips) { + if (mNoChipMode) { return true; } DrawableRecipientChip[] chips = @@ -1970,7 +1973,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements // Always leave a blank space at the end of a chip. final int textLength = displayText.length() - 1; final SpannableString chipText = new SpannableString(displayText); - if (!mNoChips) { + if (!mNoChipMode) { try { DrawableRecipientChip chip = constructChipSpan(entry); chipText.setSpan(chip, 0, textLength, @@ -1990,7 +1993,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements * given RecipientEntry. */ protected void onChipCreated(RecipientEntry entry) { - if (mRecipientChipAddedListener != null) { + if (!mNoChipMode && mRecipientChipAddedListener != null) { mRecipientChipAddedListener.onRecipientChipAdded(entry); } } @@ -2181,7 +2184,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements */ // Visible for testing. /* package */ void createMoreChip() { - if (mNoChips) { + if (mNoChipMode) { createMoreChipPlainText(); return; } @@ -2316,14 +2319,14 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements * editable text is not shown (i.e. chip is in user's contact list), chip is focused * and below callback is not called. */ - if (mRecipientChipDeletedListener != null) { + if (!mNoChipMode && mRecipientChipDeletedListener != null) { mRecipientChipDeletedListener.onRecipientChipDeleted(currentChip.getEntry()); } } else { final boolean showAddress = currentChip.getContactId() == RecipientEntry.GENERATED_CONTACT || getAdapter().forceShowAddress(); - if (showAddress && mNoChips) { + if (showAddress && mNoChipMode) { return; } @@ -2403,7 +2406,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements QwertyKeyListener.markAsReplaced(editable, start, end, ""); editable.removeSpan(chip); try { - if (!mNoChips) { + if (!mNoChipMode) { editable.setSpan(constructChipSpan(chip.getEntry()), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } @@ -2419,7 +2422,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements @Override public void onChipDelete() { if (mSelectedChip != null) { - if (mRecipientChipDeletedListener != null) { + if (!mNoChipMode && mRecipientChipDeletedListener != null) { mRecipientChipDeletedListener.onRecipientChipDeleted(mSelectedChip.getEntry()); } removeChip(mSelectedChip); @@ -2625,7 +2628,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements if (deleteEnd > editable.length()) { deleteEnd = editable.length(); } - if (mRecipientChipDeletedListener != null) { + if (!mNoChipMode && mRecipientChipDeletedListener != null) { mRecipientChipDeletedListener.onRecipientChipDeleted(toDelete.getEntry()); } editable.removeSpan(toDelete); @@ -2806,7 +2809,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements private class RecipientReplacementTask extends AsyncTask<Void, Void, Void> { private DrawableRecipientChip createFreeChip(RecipientEntry entry) { try { - if (mNoChips) { + if (mNoChipMode) { return null; } return constructChipSpan(entry); |