package org.commcare.views.dialogs; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import org.commcare.dalvik.R; import org.javarosa.core.services.locale.Localization; /** * An implementation of CommCareAlertDialog that utilizes a pre-set view template, with the ability * to customize basic fields (title, message, buttons, listeners, etc.) * * @author amstone */ public class StandardAlertDialog extends CommCareAlertDialog { public StandardAlertDialog(Context context, String title, String msg) { AlertDialog.Builder builder = new AlertDialog.Builder(context); view = LayoutInflater.from(context).inflate(R.layout.custom_alert_dialog, null); TextView titleView = (TextView)view.findViewById(R.id.dialog_title).findViewById(R.id.dialog_title_text); titleView.setText(title); TextView messageView = (TextView)view.findViewById(R.id.dialog_message); messageView.setText(msg); dialog = builder.create(); } /** * A shortcut method that will generate an alert dialog in one method call; to be used for * dialogs that have a title, message, and one button with display text "OK" * * @param positiveButtonListener - the onClickListener to apply to the positive button. If * null, applies a default listener of just dismissing the dialog */ public static StandardAlertDialog getBasicAlertDialog(Context context, String title, String msg, DialogInterface.OnClickListener positiveButtonListener) { StandardAlertDialog d = new StandardAlertDialog(context, title, msg); if (positiveButtonListener == null) { positiveButtonListener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }; } d.setPositiveButton(Localization.get("dialog.ok"), positiveButtonListener); return d; } /** * A shortcut method that will generate and show an alert dialog in one method call; to be * used for dialogs that have a title, message, an icon to be displayed to the left of the * title, and one button with display text "OK" * * @param iconResId - the id of the icon to be displayed * @param positiveButtonListener - the onClickListener to apply to the positive button. If * null, applies a default listener of just dismissing the dialog */ public static StandardAlertDialog getBasicAlertDialogWithIcon(Context context, String title, String msg, int iconResId, DialogInterface.OnClickListener positiveButtonListener) { StandardAlertDialog d = new StandardAlertDialog(context, title, msg); if (positiveButtonListener == null) { positiveButtonListener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }; } d.setPositiveButton(Localization.get("dialog.ok"), positiveButtonListener); d.setIcon(iconResId); return d; } public void setIcon(int resId) { ImageView icon = (ImageView)view.findViewById(R.id.dialog_title).findViewById(R.id.dialog_title_icon); icon.setImageResource(resId); icon.setVisibility(View.VISIBLE); } public void setPositiveButton(CharSequence displayText, final DialogInterface.OnClickListener buttonListener) { Button positiveButton = (Button)this.view.findViewById(R.id.positive_button); positiveButton.setText(displayText); positiveButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { buttonListener.onClick(dialog, AlertDialog.BUTTON_POSITIVE); } }); positiveButton.setVisibility(View.VISIBLE); } public void setNegativeButton(CharSequence displayText, final DialogInterface.OnClickListener buttonListener) { Button negativeButton = (Button)this.view.findViewById(R.id.negative_button); negativeButton.setText(displayText); negativeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { buttonListener.onClick(dialog, AlertDialog.BUTTON_NEGATIVE); } }); negativeButton.setVisibility(View.VISIBLE); } public void setNeutralButton(CharSequence displayText, final DialogInterface.OnClickListener buttonListener) { Button neutralButton = (Button)this.view.findViewById(R.id.neutral_button); neutralButton.setText(displayText); neutralButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { buttonListener.onClick(dialog, AlertDialog.BUTTON_NEUTRAL); } }); neutralButton.setVisibility(View.VISIBLE); } }