summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Sapperstein <asapperstein@google.com>2015-05-29 20:28:06 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-05-29 20:28:06 +0000
commit56066f32a6c2bb0351a3cdb483730b2d0442ce5e (patch)
tree3b4d2335c1a4f788cdaeb24014285cd908aa3855 /src
parent08b40ecdd3fc0a54beb8ec8a04f471a0994af791 (diff)
parentc6e314b5a20a234a8207ef4cd67e2f042579a087 (diff)
downloadchips-56066f32a6c2bb0351a3cdb483730b2d0442ce5e.tar.gz
am c6e314b5: Use a proper dialog fragment for copying.
* commit 'c6e314b5a20a234a8207ef4cd67e2f042579a087': Use a proper dialog fragment for copying.
Diffstat (limited to 'src')
-rw-r--r--src/com/android/ex/chips/CopyDialog.java51
-rw-r--r--src/com/android/ex/chips/RecipientEditTextView.java62
2 files changed, 61 insertions, 52 deletions
diff --git a/src/com/android/ex/chips/CopyDialog.java b/src/com/android/ex/chips/CopyDialog.java
new file mode 100644
index 0000000..631b488
--- /dev/null
+++ b/src/com/android/ex/chips/CopyDialog.java
@@ -0,0 +1,51 @@
+package com.android.ex.chips;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+
+/**
+ * Simple dialog fragment for copying the contents of a chip.
+ */
+public class CopyDialog extends DialogFragment implements DialogInterface.OnClickListener {
+
+ public static final String TAG = "chips-copy-dialog";
+
+ private static final String ARG_TEXT = "text";
+
+ private String mText;
+
+ public static CopyDialog newInstance(String text) {
+ final CopyDialog fragment = new CopyDialog();
+ final Bundle args = new Bundle(1);
+ args.putString(ARG_TEXT, text);
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ final Bundle args = getArguments();
+ mText = args.getString(ARG_TEXT);
+
+ return new AlertDialog.Builder(getActivity())
+ .setMessage(mText)
+ .setPositiveButton(R.string.chips_action_copy, this)
+ .setNegativeButton(R.string.chips_action_cancel, null)
+ .create();
+ }
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if (which == DialogInterface.BUTTON_POSITIVE) {
+ final ClipboardManager clipboard = (ClipboardManager)
+ getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
+ clipboard.setPrimaryClip(ClipData.newPlainText(null, mText));
+ }
+ }
+}
diff --git a/src/com/android/ex/chips/RecipientEditTextView.java b/src/com/android/ex/chips/RecipientEditTextView.java
index 4584e58..1908ae3 100644
--- a/src/com/android/ex/chips/RecipientEditTextView.java
+++ b/src/com/android/ex/chips/RecipientEditTextView.java
@@ -18,13 +18,12 @@
package com.android.ex.chips;
import android.annotation.TargetApi;
-import android.app.Dialog;
+import android.app.Activity;
+import android.app.DialogFragment;
import android.content.ClipData;
import android.content.ClipDescription;
import android.content.ClipboardManager;
import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnDismissListener;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
@@ -74,7 +73,6 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewParent;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
@@ -82,7 +80,6 @@ import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
-import android.widget.Button;
import android.widget.Filterable;
import android.widget.ListAdapter;
import android.widget.ListPopupWindow;
@@ -114,8 +111,8 @@ import java.util.regex.Pattern;
*/
public class RecipientEditTextView extends MultiAutoCompleteTextView implements
OnItemClickListener, Callback, RecipientAlternatesAdapter.OnCheckedItemChangedListener,
- GestureDetector.OnGestureListener, OnDismissListener, OnClickListener,
- TextView.OnEditorActionListener, DropdownChipLayouter.ChipDeleteListener {
+ GestureDetector.OnGestureListener, TextView.OnEditorActionListener,
+ DropdownChipLayouter.ChipDeleteListener {
private static final String TAG = "RecipientEditTextView";
private static final char COMMIT_CHAR_COMMA = ',';
@@ -141,9 +138,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
private static final int MAX_CHIPS_PARSED = 50;
- private int mSelectedChipTextColor;
private int mUnselectedChipTextColor;
- private int mSelectedChipBackgroundColor;
private int mUnselectedChipBackgroundColor;
// Work variables to avoid re-allocation on every typed character.
@@ -210,8 +205,6 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
// Chip copy fields.
private GestureDetector mGestureDetector;
- private Dialog mCopyDialog;
- private String mCopyAddress;
// Obtain the enclosing scroll view, if it exists, so that the view can be
// scrolled to show the last line of chips content.
@@ -271,7 +264,6 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
setupPopupWindow(mAlternatesPopup);
mAddressPopup = new ListPopupWindow(context);
setupPopupWindow(mAddressPopup);
- mCopyDialog = new Dialog(context);
mAlternatesListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView,View view, int position,
@@ -1001,17 +993,10 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
R.styleable.RecipientEditTextView_unselectedChipTextColor,
r.getColor(android.R.color.black));
- mSelectedChipTextColor = a.getColor(
- R.styleable.RecipientEditTextView_selectedChipTextColor,
- r.getColor(android.R.color.white));
-
mUnselectedChipBackgroundColor = a.getColor(
R.styleable.RecipientEditTextView_unselectedChipBackgroundColor,
r.getColor(R.color.chip_background));
- mSelectedChipBackgroundColor = a.getColor(
- R.styleable.RecipientEditTextView_selectedChipBackgroundColor,
- r.getColor(R.color.chip_background_selected));
a.recycle();
}
@@ -1670,7 +1655,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
if (mSelectedChip == null) {
mGestureDetector.onTouchEvent(event);
}
- if (mCopyAddress == null && action == MotionEvent.ACTION_UP) {
+ if (action == MotionEvent.ACTION_UP) {
float x = event.getX();
float y = event.getY();
int offset = putOffsetInRange(x, y);
@@ -3030,26 +3015,13 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
}
private void showCopyDialog(final String address) {
- if (!mAttachedToWindow) {
+ final Context context = getContext();
+ if (!mAttachedToWindow || context == null || !(context instanceof Activity)) {
return;
}
- mCopyAddress = address;
- mCopyDialog.setTitle(address);
- mCopyDialog.setContentView(R.layout.copy_chip_dialog_layout);
- mCopyDialog.setCancelable(true);
- mCopyDialog.setCanceledOnTouchOutside(true);
- Button button = (Button)mCopyDialog.findViewById(android.R.id.button1);
- button.setOnClickListener(this);
- int btnTitleId;
- if (isPhoneQuery()) {
- btnTitleId = R.string.copy_number;
- } else {
- btnTitleId = R.string.copy_email;
- }
- String buttonTitle = getContext().getResources().getString(btnTitleId);
- button.setText(buttonTitle);
- mCopyDialog.setOnDismissListener(this);
- mCopyDialog.show();
+
+ final DialogFragment fragment = CopyDialog.newInstance(address);
+ fragment.show(((Activity) context).getFragmentManager(), CopyDialog.TAG);
}
@Override
@@ -3069,20 +3041,6 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
return false;
}
- @Override
- public void onDismiss(DialogInterface dialog) {
- mCopyAddress = null;
- }
-
- @Override
- public void onClick(View v) {
- // Copy this to the clipboard.
- ClipboardManager clipboard = (ClipboardManager) getContext().getSystemService(
- Context.CLIPBOARD_SERVICE);
- clipboard.setPrimaryClip(ClipData.newPlainText("", mCopyAddress));
- mCopyDialog.dismiss();
- }
-
protected boolean isPhoneQuery() {
return getAdapter() != null
&& getAdapter().getQueryType() == BaseRecipientAdapter.QUERY_TYPE_PHONE;