package de.danoeh.antennapod.core.dialog; import android.content.Context; import android.content.DialogInterface; import android.support.v7.app.AlertDialog; import android.util.Log; import de.danoeh.antennapod.core.R; /** * Creates an AlertDialog which asks the user to confirm something. Other * classes can handle events like confirmation or cancellation. */ public abstract class ConfirmationDialog { private static final String TAG = ConfirmationDialog.class.getSimpleName(); protected Context context; int titleId; int messageId; int positiveText; int negativeText; public ConfirmationDialog(Context context, int titleId, int messageId) { this.context = context; this.titleId = titleId; this.messageId = messageId; } public void onCancelButtonPressed(DialogInterface dialog) { Log.d(TAG, "Dialog was cancelled"); dialog.dismiss(); } public void setPositiveText(int id) { this.positiveText = id; } public void setNegativeText(int id) { this.negativeText = id; } public abstract void onConfirmButtonPressed(DialogInterface dialog); public final AlertDialog createNewDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(titleId); builder.setMessage(messageId); builder.setPositiveButton(positiveText != 0 ? positiveText : R.string.confirm_label, (dialog, which) -> onConfirmButtonPressed(dialog)); builder.setNegativeButton(negativeText != 0 ? negativeText : R.string.cancel_label, (dialog, which) -> onCancelButtonPressed(dialog)); builder.setOnCancelListener(ConfirmationDialog.this::onCancelButtonPressed); return builder.create(); } }