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