16904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler/*
26904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Copyright (C) 2015 The Android Open Source Project
36904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler *
46904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Licensed under the Apache License, Version 2.0 (the "License");
56904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * you may not use this file except in compliance with the License.
66904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * You may obtain a copy of the License at
76904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler *
86904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler *      http://www.apache.org/licenses/LICENSE-2.0
96904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler *
106904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Unless required by applicable law or agreed to in writing, software
116904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * distributed under the License is distributed on an "AS IS" BASIS,
126904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * See the License for the specific language governing permissions and
146904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * limitations under the License
156904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */
166904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
176904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerpackage android.support.v7.preference;
186904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
196904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.content.Context;
206904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.content.res.TypedArray;
216904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.graphics.drawable.Drawable;
226904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.support.v4.content.ContextCompat;
2384765eaea7da18d0576db557959129e9d0db8e8cTony Mantlerimport android.support.v4.content.res.TypedArrayUtils;
246904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.util.AttributeSet;
256904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.view.View;
266904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
276904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler/**
286904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * A base class for {@link Preference} objects that are
296904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * dialog-based. These preferences will, when clicked, open a dialog showing the
306904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * actual preference controls.
316904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler *
326904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @attr ref android.R.styleable#DialogPreference_dialogTitle
336904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @attr ref android.R.styleable#DialogPreference_dialogMessage
346904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @attr ref android.R.styleable#DialogPreference_dialogIcon
356904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @attr ref android.R.styleable#DialogPreference_dialogLayout
366904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @attr ref android.R.styleable#DialogPreference_positiveButtonText
376904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @attr ref android.R.styleable#DialogPreference_negativeButtonText
386904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */
396904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerpublic abstract class DialogPreference extends Preference {
406904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
416904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public interface TargetFragment {
426904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        Preference findPreference(CharSequence key);
436904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
446904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
456904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    private CharSequence mDialogTitle;
466904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    private CharSequence mDialogMessage;
476904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    private Drawable mDialogIcon;
486904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    private CharSequence mPositiveButtonText;
496904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    private CharSequence mNegativeButtonText;
506904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    private int mDialogLayoutResId;
516904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
526904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public DialogPreference(
536904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler            Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
546904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        super(context, attrs, defStyleAttr, defStyleRes);
556904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
566904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        final TypedArray a = context.obtainStyledAttributes(attrs,
576904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler                R.styleable.DialogPreference, defStyleAttr, defStyleRes);
5884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler
5984765eaea7da18d0576db557959129e9d0db8e8cTony Mantler        mDialogTitle = TypedArrayUtils.getString(a, R.styleable.DialogPreference_dialogTitle,
6084765eaea7da18d0576db557959129e9d0db8e8cTony Mantler                R.styleable.DialogPreference_android_dialogTitle);
616904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        if (mDialogTitle == null) {
6284765eaea7da18d0576db557959129e9d0db8e8cTony Mantler            // Fall back on the regular title of the preference
636904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler            // (the one that is seen in the list)
646904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler            mDialogTitle = getTitle();
656904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        }
6684765eaea7da18d0576db557959129e9d0db8e8cTony Mantler
6784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler        mDialogMessage = TypedArrayUtils.getString(a, R.styleable.DialogPreference_dialogMessage,
6884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler                R.styleable.DialogPreference_android_dialogMessage);
6984765eaea7da18d0576db557959129e9d0db8e8cTony Mantler
7084765eaea7da18d0576db557959129e9d0db8e8cTony Mantler        mDialogIcon = TypedArrayUtils.getDrawable(a, R.styleable.DialogPreference_dialogIcon,
7184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler                R.styleable.DialogPreference_android_dialogIcon);
7284765eaea7da18d0576db557959129e9d0db8e8cTony Mantler
7384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler        mPositiveButtonText = TypedArrayUtils.getString(a,
7484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler                R.styleable.DialogPreference_positiveButtonText,
7584765eaea7da18d0576db557959129e9d0db8e8cTony Mantler                R.styleable.DialogPreference_android_positiveButtonText);
7684765eaea7da18d0576db557959129e9d0db8e8cTony Mantler
7784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler        mNegativeButtonText = TypedArrayUtils.getString(a,
7884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler                R.styleable.DialogPreference_negativeButtonText,
7984765eaea7da18d0576db557959129e9d0db8e8cTony Mantler                R.styleable.DialogPreference_android_negativeButtonText);
8084765eaea7da18d0576db557959129e9d0db8e8cTony Mantler
8184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler        mDialogLayoutResId = TypedArrayUtils.getResourceId(a,
8284765eaea7da18d0576db557959129e9d0db8e8cTony Mantler                R.styleable.DialogPreference_dialogLayout,
8384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler                R.styleable.DialogPreference_android_dialogLayout, 0);
8484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler
856904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        a.recycle();
866904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
876904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
886904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public DialogPreference(Context context, AttributeSet attrs, int defStyleAttr) {
896904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        this(context, attrs, defStyleAttr, 0);
906904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
916904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
926904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public DialogPreference(Context context, AttributeSet attrs) {
936904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        this(context, attrs, R.attr.dialogPreferenceStyle);
946904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
956904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
966904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public DialogPreference(Context context) {
976904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        this(context, null);
986904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
996904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
1006904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
1016904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * Sets the title of the dialog. This will be shown on subsequent dialogs.
1026904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     *
1036904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @param dialogTitle The title.
1046904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
1056904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public void setDialogTitle(CharSequence dialogTitle) {
1066904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        mDialogTitle = dialogTitle;
1076904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
1086904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
1096904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
1106904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @see #setDialogTitle(CharSequence)
1116904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @param dialogTitleResId The dialog title as a resource.
1126904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
1136904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public void setDialogTitle(int dialogTitleResId) {
1146904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        setDialogTitle(getContext().getString(dialogTitleResId));
1156904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
1166904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
1176904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
1186904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * Returns the title to be shown on subsequent dialogs.
1196904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @return The title.
1206904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
1216904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public CharSequence getDialogTitle() {
1226904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        return mDialogTitle;
1236904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
1246904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
1256904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
1266904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * Sets the message of the dialog. This will be shown on subsequent dialogs.
1276904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * <p>
1286904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * This message forms the content View of the dialog and conflicts with
1296904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * list-based dialogs, for example. If setting a custom View on a dialog via
1306904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * {@link #setDialogLayoutResource(int)}, include a text View with ID
1316904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * {@link android.R.id#message} and it will be populated with this message.
1326904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     *
1336904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @param dialogMessage The message.
1346904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
1356904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public void setDialogMessage(CharSequence dialogMessage) {
1366904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        mDialogMessage = dialogMessage;
1376904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
1386904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
1396904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
1406904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @see #setDialogMessage(CharSequence)
1416904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @param dialogMessageResId The dialog message as a resource.
1426904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
1436904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public void setDialogMessage(int dialogMessageResId) {
1446904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        setDialogMessage(getContext().getString(dialogMessageResId));
1456904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
1466904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
1476904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
1486904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * Returns the message to be shown on subsequent dialogs.
1496904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @return The message.
1506904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
1516904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public CharSequence getDialogMessage() {
1526904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        return mDialogMessage;
1536904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
1546904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
1556904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
1566904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * Sets the icon of the dialog. This will be shown on subsequent dialogs.
1576904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     *
1586904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @param dialogIcon The icon, as a {@link Drawable}.
1596904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
1606904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public void setDialogIcon(Drawable dialogIcon) {
1616904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        mDialogIcon = dialogIcon;
1626904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
1636904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
1646904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
1656904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * Sets the icon (resource ID) of the dialog. This will be shown on
1666904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * subsequent dialogs.
1676904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     *
1686904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @param dialogIconRes The icon, as a resource ID.
1696904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
1706904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public void setDialogIcon(int dialogIconRes) {
1716904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        mDialogIcon = ContextCompat.getDrawable(getContext(), dialogIconRes);
1726904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
1736904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
1746904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
1756904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * Returns the icon to be shown on subsequent dialogs.
1766904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @return The icon, as a {@link Drawable}.
1776904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
1786904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public Drawable getDialogIcon() {
1796904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        return mDialogIcon;
1806904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
1816904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
1826904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
1836904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * Sets the text of the positive button of the dialog. This will be shown on
1846904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * subsequent dialogs.
1856904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     *
1866904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @param positiveButtonText The text of the positive button.
1876904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
1886904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public void setPositiveButtonText(CharSequence positiveButtonText) {
1896904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        mPositiveButtonText = positiveButtonText;
1906904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
1916904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
1926904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
1936904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @see #setPositiveButtonText(CharSequence)
1946904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @param positiveButtonTextResId The positive button text as a resource.
1956904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
1966904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public void setPositiveButtonText(int positiveButtonTextResId) {
1976904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        setPositiveButtonText(getContext().getString(positiveButtonTextResId));
1986904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
1996904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
2006904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
2016904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * Returns the text of the positive button to be shown on subsequent
2026904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * dialogs.
2036904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     *
2046904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @return The text of the positive button.
2056904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
2066904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public CharSequence getPositiveButtonText() {
2076904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        return mPositiveButtonText;
2086904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
2096904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
2106904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
2116904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * Sets the text of the negative button of the dialog. This will be shown on
2126904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * subsequent dialogs.
2136904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     *
2146904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @param negativeButtonText The text of the negative button.
2156904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
2166904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public void setNegativeButtonText(CharSequence negativeButtonText) {
2176904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        mNegativeButtonText = negativeButtonText;
2186904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
2196904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
2206904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
2216904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @see #setNegativeButtonText(CharSequence)
2226904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @param negativeButtonTextResId The negative button text as a resource.
2236904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
2246904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public void setNegativeButtonText(int negativeButtonTextResId) {
2256904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        setNegativeButtonText(getContext().getString(negativeButtonTextResId));
2266904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
2276904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
2286904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
2296904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * Returns the text of the negative button to be shown on subsequent
2306904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * dialogs.
2316904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     *
2326904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @return The text of the negative button.
2336904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
2346904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public CharSequence getNegativeButtonText() {
2356904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        return mNegativeButtonText;
2366904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
2376904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
2386904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
2396904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * Sets the layout resource that is inflated as the {@link View} to be shown
2406904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * as the content View of subsequent dialogs.
2416904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     *
2426904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @param dialogLayoutResId The layout resource ID to be inflated.
2436904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @see #setDialogMessage(CharSequence)
2446904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
2456904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public void setDialogLayoutResource(int dialogLayoutResId) {
2466904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        mDialogLayoutResId = dialogLayoutResId;
2476904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
2486904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
2496904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    /**
2506904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * Returns the layout resource that is used as the content View for
2516904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * subsequent dialogs.
2526904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     *
2536904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     * @return The layout resource.
2546904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler     */
2556904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    public int getDialogLayoutResource() {
2566904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        return mDialogLayoutResId;
2576904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
2586904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
2596904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    @Override
2606904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    protected void onClick() {
2616904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler        getPreferenceManager().showDialog(this);
2626904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler    }
2636904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler
2646904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler}
265