package com.hitherejoe.watchtower.util;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.support.annotation.StringRes;
import android.text.InputType;
import android.widget.EditText;
import com.hitherejoe.watchtower.R;
import com.hitherejoe.watchtower.data.model.ErrorResponse;
import retrofit.RetrofitError;
public class DialogFactory {
public static Dialog createSimpleOkErrorDialog(Context context, String title, String message) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
.setTitle(title)
.setMessage(message)
.setNeutralButton(R.string.dialog_action_ok, null);
return alertDialog.create();
}
public static Dialog createSimpleErrorDialog(Context context) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
.setTitle(context.getString(R.string.dialog_error_title))
.setMessage(context.getString(R.string.dialog_general_error_Message))
.setNeutralButton(R.string.dialog_action_ok, null);
return alertDialog.create();
}
public static Dialog createRetrofitErrorDialog(Context context, RetrofitError error) {
ErrorResponse errorResponse = DataUtils.parseRetrofitError(error);
return createSimpleOkErrorDialog(context, "Error: " + errorResponse.error.code, errorResponse.error.message);
}
public static ProgressDialog createProgressDialog(Context context, String message) {
ProgressDialog progressDialog = new ProgressDialog(context);
progressDialog.setMessage(message);
return progressDialog;
}
public static Dialog createInputDialog(Context context, String title, String message, final DialogInputCallback inputCallback) {
final EditText input = new EditText(context);
input.setInputType(InputType.TYPE_CLASS_TEXT);
input.setHint(context.getString(R.string.dialog_hint_namespaced_type));
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
.setTitle(title)
.setMessage(message)
.setView(input)
.setPositiveButton(context.getString(R.string.dialog_action_delete), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
inputCallback.onInputSubmitted(input.getText().toString());
}
})
.setNegativeButton(context.getString(R.string.dialog_action_cancel), null);
return alertDialog.create();
}
public static Dialog createAuthErrorDialog(Context context, String message, DialogInterface.OnClickListener onPositiveClick, DialogInterface.OnClickListener onNegativeClick) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
.setTitle(context.getString(R.string.dialog_error_title))
.setMessage(message)
.setPositiveButton(R.string.dialog_action_authorise, onPositiveClick)
.setNegativeButton(R.string.dialog_action_exit, onNegativeClick);
return alertDialog.create();
}
public static ProgressDialog createProgressDialog(Context context, @StringRes int messageResoruce) {
return createProgressDialog(context, context.getString(messageResoruce));
}
public interface DialogInputCallback {
String onInputSubmitted(String input);
}
}