Merge "QuickContact: onLongClick save item data to clipboard"
diff --git a/src/com/android/contacts/quickcontact/QuickContactListFragment.java b/src/com/android/contacts/quickcontact/QuickContactListFragment.java
index 6a0b27b..761c854 100644
--- a/src/com/android/contacts/quickcontact/QuickContactListFragment.java
+++ b/src/com/android/contacts/quickcontact/QuickContactListFragment.java
@@ -17,6 +17,9 @@
 package com.android.contacts.quickcontact;
 
 import android.app.Fragment;
+import android.content.ClipboardManager;
+import android.content.ClipData;
+import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
@@ -25,12 +28,14 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnClickListener;
+import android.view.View.OnLongClickListener;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import com.android.contacts.common.ContactPresenceIconUtil;
 import com.android.contacts.R;
@@ -44,6 +49,8 @@
     private RelativeLayout mFragmentContainer;
     private Listener mListener;
     private String mMimeType;
+    private ClipboardManager mClipBoard;
+    private Toast mLongPressToast;
 
     public QuickContactListFragment(String mimeType) {
         setRetainInstance(true);
@@ -58,6 +65,10 @@
         mListView.setItemsCanFocus(true);
 
         mFragmentContainer.setOnClickListener(mOutsideClickListener);
+        mClipBoard = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
+        mLongPressToast = Toast.makeText(getActivity(),
+                R.string.toast_text_copied, Toast.LENGTH_SHORT);
+
         configureAdapter();
         return mFragmentContainer;
     }
@@ -121,6 +132,7 @@
                         (ImageView) resultView.findViewById(R.id.presence_icon);
 
                 actionsContainer.setOnClickListener(mPrimaryActionClickListener);
+                actionsContainer.setOnLongClickListener(mPrimaryActionLongClickListener);
                 actionsContainer.setTag(action);
                 alternateActionButton.setOnClickListener(mSecondaryActionClickListener);
                 alternateActionButton.setTag(action);
@@ -176,6 +188,19 @@
         }
     };
 
+    /** A data item was long clicked */
+    protected final OnLongClickListener mPrimaryActionLongClickListener = new OnLongClickListener() {
+        @Override
+        public boolean onLongClick(View v) {
+            final Action action = (Action) v.getTag();
+            ClipData clip = android.content.ClipData.newPlainText(
+                    action.getSubtitle(), action.getBody());
+            mClipBoard.setPrimaryClip(clip);
+            mLongPressToast.show();
+            return true;
+        }
+    };
+
     /** A secondary action (SMS) was clicked */
     protected final OnClickListener mSecondaryActionClickListener = new OnClickListener() {
         @Override