Adding build file and shared utils for ContactsCommon.

- Shared components for Contacts and Dialer app.

Bug: 6993891
Change-Id: I15ee8ccdc5119ee744db19726ce6d42e89fa509b
diff --git a/src/com/android/contacts/common/CallUtil.java b/src/com/android/contacts/common/CallUtil.java
new file mode 100644
index 0000000..07e52fa
--- /dev/null
+++ b/src/com/android/contacts/common/CallUtil.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.contacts.common;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.telephony.PhoneNumberUtils;
+
+import com.android.phone.common.PhoneConstants;
+
+/**
+ * Utilities related to calls.
+ */
+public class CallUtil {
+
+    public static final String SCHEME_TEL = "tel";
+    public static final String SCHEME_SMSTO = "smsto";
+    public static final String SCHEME_MAILTO = "mailto";
+    public static final String SCHEME_IMTO = "imto";
+    public static final String SCHEME_SIP = "sip";
+
+    /**
+     * Return an Intent for making a phone call. Scheme (e.g. tel, sip) will be determined
+     * automatically.
+     */
+    public static Intent getCallIntent(String number) {
+        return getCallIntent(number, null);
+    }
+
+    /**
+     * Return an Intent for making a phone call. A given Uri will be used as is (without any
+     * sanity check).
+     */
+    public static Intent getCallIntent(Uri uri) {
+        return getCallIntent(uri, null);
+    }
+
+    /**
+     * A variant of {@link #getCallIntent(String)} but also accept a call origin. For more
+     * information about call origin, see comments in Phone package (PhoneApp).
+     */
+    public static Intent getCallIntent(String number, String callOrigin) {
+        return getCallIntent(getCallUri(number), callOrigin);
+    }
+
+    /**
+     * A variant of {@link #getCallIntent(android.net.Uri)} but also accept a call origin. For more
+     * information about call origin, see comments in Phone package (PhoneApp).
+     */
+    public static Intent getCallIntent(Uri uri, String callOrigin) {
+        final Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED, uri);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        if (callOrigin != null) {
+            intent.putExtra(PhoneConstants.EXTRA_CALL_ORIGIN, callOrigin);
+        }
+        return intent;
+    }
+
+    /**
+     * Return Uri with an appropriate scheme, accepting Voicemail, SIP, and usual phone call
+     * numbers.
+     */
+    public static Uri getCallUri(String number) {
+        if (PhoneNumberUtils.isVoiceMailNumber(number)) {
+            return Uri.parse("voicemail:");
+        }
+        if (PhoneNumberUtils.isUriNumber(number)) {
+             return Uri.fromParts(SCHEME_SIP, number, null);
+        }
+        return Uri.fromParts(SCHEME_TEL, number, null);
+     }
+}
diff --git a/src/com/android/contacts/common/ClipboardUtils.java b/src/com/android/contacts/common/ClipboardUtils.java
new file mode 100644
index 0000000..27af963
--- /dev/null
+++ b/src/com/android/contacts/common/ClipboardUtils.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.contacts.common;
+
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.text.TextUtils;
+import android.widget.Toast;
+
+public class ClipboardUtils {
+    private static final String TAG = "ClipboardUtils";
+
+    private ClipboardUtils() { }
+
+    /**
+     * Copy a text to clipboard.
+     *
+     * @param context Context
+     * @param label Label to show to the user describing this clip.
+     * @param text Text to copy.
+     * @param showToast If {@code true}, a toast is shown to the user.
+     */
+    public static void copyText(Context context, CharSequence label, CharSequence text,
+            boolean showToast) {
+        if (TextUtils.isEmpty(text)) return;
+
+        ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(
+                Context.CLIPBOARD_SERVICE);
+        ClipData clipData = ClipData.newPlainText(label == null ? "" : label, text);
+        clipboardManager.setPrimaryClip(clipData);
+
+        if (showToast) {
+            String toastText = context.getString(R.string.toast_text_copied);
+            Toast.makeText(context, toastText, Toast.LENGTH_SHORT).show();
+        }
+    }
+}