1 package eu
.alefzero
.owncloud
.ui
.fragment
;
3 import android
.app
.AlertDialog
;
4 import android
.app
.Dialog
;
5 import android
.content
.DialogInterface
;
6 import android
.os
.Bundle
;
7 import android
.util
.Log
;
9 import com
.actionbarsherlock
.app
.SherlockDialogFragment
;
11 import eu
.alefzero
.owncloud
.R
;
13 public class ConfirmationDialogFragment
extends SherlockDialogFragment
{
15 public final static String ARG_CONF_RESOURCE_ID
= "resource_id";
16 public final static String ARG_CONF_ARGUMENTS
= "string_array";
18 public final static String ARG_POSITIVE_BTN_RES
= "positive_btn_res";
19 public final static String ARG_NEUTRAL_BTN_RES
= "neutral_btn_res";
20 public final static String ARG_NEGATIVE_BTN_RES
= "negative_btn_res";
22 private ConfirmationDialogFragmentListener mListener
;
24 public static ConfirmationDialogFragment
newInstance(int string_id
, String
[] arguments
, int posBtn
, int neuBtn
, int negBtn
) {
25 ConfirmationDialogFragment frag
= new ConfirmationDialogFragment();
26 Bundle args
= new Bundle();
27 args
.putInt(ARG_CONF_RESOURCE_ID
, string_id
);
28 args
.putStringArray(ARG_CONF_ARGUMENTS
, arguments
);
29 args
.putInt(ARG_POSITIVE_BTN_RES
, posBtn
);
30 args
.putInt(ARG_NEUTRAL_BTN_RES
, neuBtn
);
31 args
.putInt(ARG_NEGATIVE_BTN_RES
, negBtn
);
32 frag
.setArguments(args
);
36 public void setOnConfirmationListener(ConfirmationDialogFragmentListener listener
) {
41 public Dialog
onCreateDialog(Bundle savedInstanceState
) {
42 Object
[] confirmationTarget
= getArguments().getStringArray(ARG_CONF_ARGUMENTS
);
43 int resourceId
= getArguments().getInt(ARG_CONF_RESOURCE_ID
, -1);
44 int posBtn
= getArguments().getInt(ARG_POSITIVE_BTN_RES
, -1);
45 int neuBtn
= getArguments().getInt(ARG_NEUTRAL_BTN_RES
, -1);
46 int negBtn
= getArguments().getInt(ARG_NEGATIVE_BTN_RES
, -1);
48 if (confirmationTarget
== null
|| resourceId
== -1) {
49 Log
.wtf(getTag(), "Calling confirmation dialog without resource or arguments");
53 AlertDialog
.Builder builder
= new AlertDialog
.Builder(getActivity())
54 .setIcon(android
.R
.drawable
.ic_dialog_alert
)
55 .setMessage(String
.format(getString(resourceId
), confirmationTarget
))
56 .setTitle(android
.R
.string
.dialog_alert_title
);
57 if (android
.os
.Build
.VERSION
.SDK_INT
>= android
.os
.Build
.VERSION_CODES
.HONEYCOMB
) {
58 builder
.setIconAttribute(android
.R
.attr
.alertDialogIcon
);
62 builder
.setPositiveButton(posBtn
,
63 new DialogInterface
.OnClickListener() {
64 public void onClick(DialogInterface dialog
, int whichButton
) {
65 mListener
.onConfirmation(getTag());
69 builder
.setNeutralButton(neuBtn
,
70 new DialogInterface
.OnClickListener() {
71 public void onClick(DialogInterface dialog
, int whichButton
) {
72 mListener
.onNeutral(getTag());
76 builder
.setNegativeButton(negBtn
,
77 new DialogInterface
.OnClickListener() {
79 public void onClick(DialogInterface dialog
, int which
) {
80 mListener
.onCancel(getTag());
83 return builder
.create();
87 public interface ConfirmationDialogFragmentListener
{
88 public void onConfirmation(String callerTag
);
89 public void onNeutral(String callerTag
);
90 public void onCancel(String callerTag
);