/*
* Copyright (c) 2015 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
* All Rights Reserved.
*/
package me.zhanghai.android.douya.util;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.net.Uri;
import android.text.TextUtils;
import me.zhanghai.android.douya.R;
public class ClipboardUtils {
private static final int TOAST_COPIED_TEXT_MAX_LENGTH = 40;
private ClipboardUtils() {}
private static ClipboardManager getClipboardManager(Context context) {
return (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
}
public static void copyText(CharSequence label, CharSequence text, Context context) {
ClipData clipData = ClipData.newPlainText(label, text);
getClipboardManager(context).setPrimaryClip(clipData);
showToast(text, context);
}
public static void copyRawUri(CharSequence label, Uri uri, Context context) {
ClipData clipData = ClipData.newRawUri(label, uri);
getClipboardManager(context).setPrimaryClip(clipData);
showToast(uri.toString(), context);
}
public static void copyUrl(CharSequence label, String url, Context context) {
copyRawUri(label, Uri.parse(url), context);
}
public static void copyUri(CharSequence label, Uri uri, Context context) {
ClipData clipData = ClipData.newUri(context.getContentResolver(), label, uri);
getClipboardManager(context).setPrimaryClip(clipData);
showToast(uri.toString(), context);
}
private static void showToast(CharSequence copiedText, Context context) {
boolean ellipsized = false;
if (copiedText.length() > TOAST_COPIED_TEXT_MAX_LENGTH) {
copiedText = copiedText.subSequence(0, TOAST_COPIED_TEXT_MAX_LENGTH);
ellipsized = true;
}
int indexOfFirstNewline = TextUtils.indexOf(copiedText, '\n');
if (indexOfFirstNewline != -1) {
int indexOfSecondNewline = TextUtils.indexOf(copiedText, '\n', indexOfFirstNewline + 1);
if (indexOfSecondNewline != -1) {
copiedText = copiedText.subSequence(0, indexOfSecondNewline);
ellipsized = true;
}
}
if (ellipsized) {
copiedText = copiedText.toString() + '\u2026';
}
ToastUtils.show(context.getString(R.string.copied_to_clipboard_format, copiedText),
context);
}
}