1bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook/*
2bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Copyright (C) 2010 The Android Open Source Project
3bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook *
4bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Licensed under the Apache License, Version 2.0 (the "License");
5bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * you may not use this file except in compliance with the License.
6bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * You may obtain a copy of the License at
7bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook *
8bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook *      http://www.apache.org/licenses/LICENSE-2.0
9bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook *
10bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Unless required by applicable law or agreed to in writing, software
11bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * distributed under the License is distributed on an "AS IS" BASIS,
12bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * See the License for the specific language governing permissions and
14bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * limitations under the License.
15bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */
16bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook
17bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookpackage com.android.email.activity;
18bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook
19bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport com.android.email.R;
20bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook
21bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.app.AlertDialog;
22bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.app.Dialog;
23bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.app.DialogFragment;
24bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.app.Fragment;
25bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.content.Context;
26bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.content.DialogInterface;
27bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.content.res.Resources;
28bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.os.Bundle;
29bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook
30bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook/**
31bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Confirmation dialog for deleting messages.
32bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */
33bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookpublic class DeleteMessageConfirmationDialog extends DialogFragment
34bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        implements DialogInterface.OnClickListener {
35bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook    private static final String COUNT_MESSAGES_ARG = "count_messages";
36bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook
37bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook    public interface Callback {
38bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        public void onDeleteMessageConfirmationDialogOkPressed();
39bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook    }
40bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook
41bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook    /**
42bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook     * Create a new dialog.
43bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook     *
44bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook     * @param countMessage the number of messages to be deleted
45bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook     * @param callbackFragment fragment that implements {@link Callback}.  Or null, in which case
46bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook     * the parent activity must implement {@link Callback}.
47bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook     */
48bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook    public static DeleteMessageConfirmationDialog newInstance(int countMessage,
49bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook            Fragment callbackFragment) {
50bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        final DeleteMessageConfirmationDialog dialog = new DeleteMessageConfirmationDialog();
51bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        final Bundle args = new Bundle();
52bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        args.putInt(COUNT_MESSAGES_ARG, countMessage);
53bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        dialog.setArguments(args);
54bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        if (callbackFragment != null) {
55bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook            dialog.setTargetFragment(callbackFragment, 0);
56bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        }
57bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        return dialog;
58bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook    }
59bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook
60bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook    @Override
61bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook    public Dialog onCreateDialog(Bundle savedInstanceState) {
62bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        final int countMessages = getArguments().getInt(COUNT_MESSAGES_ARG);
63bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook
64bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        final Context context = getActivity();
65bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        final Resources res = context.getResources();
66bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        final AlertDialog.Builder b = new AlertDialog.Builder(context);
67bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        b.setTitle(res.getString(R.string.message_delete_dialog_title))
68bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook                .setIconAttribute(android.R.attr.alertDialogIcon)
69bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook                .setMessage(res.getQuantityString(R.plurals.message_delete_confirm, countMessages))
70bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook                .setPositiveButton(R.string.okay_action, this)
71bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook                .setNegativeButton(R.string.cancel_action, null);
72bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        return b.create();
73bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook    }
74bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook
75bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook    @Override
76bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook    public void onClick(DialogInterface dialog, int which) {
77bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        switch (which) {
78bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook            case DialogInterface.BUTTON_POSITIVE:
79bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook                getCallback().onDeleteMessageConfirmationDialogOkPressed();
80bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook                break;
81bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        }
82bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook    }
83bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook
84bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook    private Callback getCallback() {
85bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        Fragment targetFragment = getTargetFragment();
86bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        if (targetFragment != null) {
87bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook            // If a target is set, it MUST implement Callback.
88bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook            return (Callback) targetFragment;
89bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        }
90bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        // If not the parent activity MUST implement Callback.
91bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook        return (Callback) getActivity();
92bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook    }
93bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook}
94