/* * Copyright (c) 2016 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com> * All Rights Reserved. */ package me.zhanghai.android.douya.ui; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatDialogFragment; import android.widget.TextView; import me.zhanghai.android.douya.R; import me.zhanghai.android.douya.util.ClipboardUtils; import me.zhanghai.android.douya.util.FragmentUtils; public class CopyTextDialogFragment extends AppCompatDialogFragment { private static final String KEY_PREFIX = CopyTextDialogFragment.class.getName() + '.'; private static final String EXTRA_TEXT = KEY_PREFIX + "text"; private String mText; /** * @deprecated Use {@link #newInstance(String)} instead. */ public CopyTextDialogFragment() {} public static CopyTextDialogFragment newInstance(String text) { //noinspection deprecation CopyTextDialogFragment fragment = new CopyTextDialogFragment(); FragmentUtils.ensureArguments(fragment) .putString(EXTRA_TEXT, text); return fragment; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mText = getArguments().getString(EXTRA_TEXT); } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { return new AlertDialog.Builder(getActivity(), getTheme()) .setMessage(mText) .setPositiveButton(R.string.copy_to_clipboard, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { ClipboardUtils.copyText(null, mText, getActivity()); } }) .create(); } @Override public void onStart() { super.onStart(); Dialog dialog = getDialog(); if (dialog != null) { TextView messageText = (TextView) dialog.findViewById(android.R.id.message); if (messageText != null) { messageText.setTextIsSelectable(true); } } } public static void show(String text, Fragment fragment) { CopyTextDialogFragment.newInstance(text) .show(fragment.getChildFragmentManager(), null); } }