diff options
author | Joseph Moghadam <jmoghadam@google.com> | 2017-01-31 22:38:22 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-01-31 22:38:22 +0000 |
commit | 4b8be67300bc7e04905f81616332736901bfc1d1 (patch) | |
tree | cdc7b76fa0840b999134ea50bea611221589aaba /src/com | |
parent | 2c16326b51a185a04ada7f1807f19b2029ef1c84 (diff) | |
parent | b37b09e7269db1d135abcd9ff0660f9ee00a83c4 (diff) | |
download | chips-4b8be67300bc7e04905f81616332736901bfc1d1.tar.gz |
Persist warning alert dialog across rotations.
am: b37b09e726
Change-Id: I724bcbb88c9c6829bc5e99b13755be3ae07b05e0
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/ex/chips/RecipientEditTextView.java | 51 |
1 files changed, 39 insertions, 12 deletions
diff --git a/src/com/android/ex/chips/RecipientEditTextView.java b/src/com/android/ex/chips/RecipientEditTextView.java index f90784d..8e88895 100644 --- a/src/com/android/ex/chips/RecipientEditTextView.java +++ b/src/com/android/ex/chips/RecipientEditTextView.java @@ -25,6 +25,7 @@ import android.content.ClipData; import android.content.ClipDescription; import android.content.ClipboardManager; import android.content.Context; +import android.content.DialogInterface; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Bitmap; @@ -44,6 +45,7 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.StateListDrawable; import android.os.AsyncTask; import android.os.Build; +import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -130,6 +132,8 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements /*package*/ static final int CHIP_LIMIT = 2; private static final int MAX_CHIPS_PARSED = 50; + public static final String STATE_TEXT_VIEW = "savedTextView"; + public static final String STATE_CURRENT_WARNING_TEXT = "savedCurrentWarningText"; private int mUnselectedChipTextColor; private int mUnselectedChipBackgroundColor; @@ -248,8 +252,10 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements // domain. We will show a warning for these addresses in the recipient chips. private Set<String> mUntrustedAddresses = new HashSet<>(); - private String mWarningText = ""; + private String mWarningTextTemplate = ""; private String mWarningTitle = ""; + // Text of the warning dialog currently being displayed. Empty if no dialog currently displayed. + private String mCurrentWarningText = ""; /** * Sets this recipient edit text view to display warning icons in chips for the given addresses. @@ -257,19 +263,19 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements * @param untrustedAddresses The addresses to display warning icons for. * @param warningIcon The icon to show for each address. * @param warningIconHeight Height of the warning icon in - * @param warningText Text to display when warning icon is clicked. + * @param warningTextTemplate Text to display when warning icon is clicked. * @param warningTitle Title to display for text when warning icon is clicked. */ public void setUntrustedAddressWarning( Set<String> untrustedAddresses, Bitmap warningIcon, int warningIconHeight, - String warningText, + String warningTextTemplate, String warningTitle) { mUntrustedAddresses = untrustedAddresses; mWarningIcon = warningIcon; mWarningIconHeight = warningIconHeight; - mWarningText = warningText; + mWarningTextTemplate = warningTextTemplate; mWarningTitle = warningTitle; } @@ -541,10 +547,17 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements @Override public void onRestoreInstanceState(Parcelable state) { + Bundle savedInstanceState = (Bundle) state; if (!TextUtils.isEmpty(getText())) { super.onRestoreInstanceState(null); } else { - super.onRestoreInstanceState(state); + super.onRestoreInstanceState( + savedInstanceState.getParcelable(STATE_TEXT_VIEW)); + } + String savedWarningText = savedInstanceState.getString( + STATE_CURRENT_WARNING_TEXT); + if (!savedWarningText.isEmpty()) { + showWarningDialog(savedWarningText); } } @@ -552,7 +565,10 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements public Parcelable onSaveInstanceState() { // If the user changes orientation while they are editing, just roll back the selection. clearSelectedChip(); - return super.onSaveInstanceState(); + Bundle savedInstanceState = new Bundle(); + savedInstanceState.putParcelable(STATE_TEXT_VIEW, super.onSaveInstanceState()); + savedInstanceState.putString(STATE_CURRENT_WARNING_TEXT, mCurrentWarningText); + return savedInstanceState; } /** @@ -1914,12 +1930,9 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements outOfDomainWarningBounds.right, outOfDomainWarningBounds.bottom + getTotalPaddingTop()); if (touchOutOfDomainWarning.contains(event.getX(), event.getY())) { - new AlertDialog.Builder(RecipientEditTextView.this.getContext()) - .setTitle(mWarningTitle) - .setMessage( - String.format(mWarningText, - currentChip.getEntry().getDestination())) - .show(); + String warningText = String.format(mWarningTextTemplate, + currentChip.getEntry().getDestination()); + showWarningDialog(warningText); touchedWarningIcon = true; } } @@ -1966,6 +1979,20 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements return handled; } + private void showWarningDialog(String warningText) { + mCurrentWarningText = warningText; + new AlertDialog.Builder(RecipientEditTextView.this.getContext()) + .setTitle(mWarningTitle) + .setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + mCurrentWarningText = ""; + } + }) + .setMessage(mCurrentWarningText) + .show(); + } + private void showAlternates(final DrawableRecipientChip currentChip, final ListPopupWindow alternatesPopup) { new AsyncTask<Void, Void, ListAdapter>() { |