package com.ichi2.anki.dialogs; import android.content.res.Resources; import android.os.Bundle; import android.support.v4.app.DialogFragment; import com.afollestad.materialdialogs.MaterialDialog; import com.ichi2.anki.R; /** * This is a reusable convenience class which makes it easy to show a confirmation dialog as a DialogFragment. * Create a new instance, call setArgs(...), setConfirm(), and setCancel() then show it via the fragment manager as usual. */ public class ConfirmationDialog extends DialogFragment { // TODO: Replace these with lambdas private Runnable mConfirm = new Runnable() { @Override public void run() { // Do nothing by default } }; private Runnable mCancel = new Runnable() { @Override public void run() { // Do nothing by default } }; public void setArgs(String message) { setArgs("" , message); } public void setArgs(String title, String message) { Bundle args = new Bundle(); args.putString("message", message); args.putString("title", title); setArguments(args); } public void setConfirm(Runnable confirm) { mConfirm = confirm; } public void setCancel(Runnable cancel) { mCancel = cancel; } @Override public MaterialDialog onCreateDialog(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Resources res = getActivity().getResources(); String title = getArguments().getString("title"); return new MaterialDialog.Builder(getActivity()) .title(title.equals("") ? res.getString(R.string.app_name) : title) .content(getArguments().getString("message")) .positiveText(res.getString(R.string.dialog_ok)) .negativeText(res.getString(R.string.dialog_cancel)) .callback(new MaterialDialog.ButtonCallback() { @Override public void onPositive(MaterialDialog dialog) { mConfirm.run(); } @Override public void onNegative(MaterialDialog dialog) { mCancel.run(); } }) .show(); } }