package com.socialize.ui.error; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.Context; import android.content.DialogInterface; import android.util.Log; import com.socialize.error.SocializeApiError; import com.socialize.error.SocializeErrorHandler; import com.socialize.log.SocializeLogger; import com.socialize.ui.dialog.DialogRegistration; import com.socialize.util.Drawables; import com.socialize.util.StringUtils; public class DialogErrorHandler implements SocializeErrorHandler { private Drawables drawables; private String message; @Override public void handleError(Context context, Exception e) { SocializeLogger.e("", e); String message = "An unexpected error occurred. Please try again"; if(e instanceof SocializeApiError) { int code = ((SocializeApiError)e).getResultCode(); if(code == 500) { message += "\n\nServer Error (" + code + ")"; } else { message += "\n\n" + e.getMessage(); } } handleError(context, message); } protected void handleError(Context context, String message) { try { AlertDialog.Builder builder = makeBuilder(context); builder.setTitle("Error"); if(drawables != null) { builder.setIcon(drawables.getDrawable("socialize_icon_white.png")); } if(!StringUtils.isEmpty(message)) { builder.setMessage(message); } else { builder.setMessage(this.message); } builder.setCancelable(false) .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.dismiss(); } }); AlertDialog alert = builder.create(); DialogRegistration.register(context, alert); alert.show(); } catch (Exception e) { Log.e(getClass().getSimpleName(), "Error displaying dialog, original message was [" + message + "]", e); } } protected Builder makeBuilder(Context context) { return new AlertDialog.Builder(context); } public void setDrawables(Drawables drawables) { this.drawables = drawables; } public void setMessage(String message) { this.message = message; } }