package com.kth.baasio.helpcenter.ui.dialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnKeyListener;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.KeyEvent;
public class ProgressDialogFragment extends DialogFragment {
private String mBody;
private int mStyle = ProgressDialog.STYLE_SPINNER;
private int mProgressMax = 100;
private ProgressDialog mDialog;
public static ProgressDialogFragment newInstance() {
ProgressDialogFragment frag = new ProgressDialogFragment();
return frag;
}
public void setBody(String body) {
mBody = body;
}
public void setStyle(int style) {
mStyle = style;
}
public void setMax(int progressMax) {
mProgressMax = progressMax;
}
public void setProgress(int progress) {
if (mDialog != null) {
mDialog.setProgress(progress);
}
}
public int getProgress() {
if (mDialog != null) {
return mDialog.getProgress();
}
return -1;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
mDialog = new ProgressDialog(getActivity());
if (mBody != null && mBody.length() > 0) {
mDialog.setMessage(mBody);
}
mDialog.setCancelable(false);
mDialog.setProgressStyle(mStyle);
if (mStyle != ProgressDialog.STYLE_SPINNER) {
mDialog.setMax(mProgressMax);
mDialog.setIndeterminate(false);
mDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getString(android.R.string.cancel),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (mListener != null) {
mListener.onNegativeButtonSelected(getTag());
}
dialog.dismiss();
}
});
} else {
mDialog.setIndeterminate(true);
}
mDialog.setProgress(50);
// Disable the back button
OnKeyListener keyListener = new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return false;
}
};
mDialog.setOnKeyListener(keyListener);
return mDialog;
}
private DialogResultListener mListener;
public interface DialogResultListener {
public boolean onNegativeButtonSelected(String tag);
}
public void setDialogResultListener(DialogResultListener listener) {
mListener = listener;
}
}