package org.wordpress.android.util; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.DialogFragment; import com.actionbarsherlock.app.SherlockDialogFragment; import com.justsystems.hpb.pad.R; import org.wordpress.android.WordPress; import org.wordpress.android.ui.accounts.AccountSetupActivity; import org.wordpress.android.ui.prefs.BlogPreferencesActivity; public class WPAlertDialogFragment extends SherlockDialogFragment implements DialogInterface.OnClickListener { private static boolean isXMLRPC = false; private static boolean isLoadMore = false; public static WPAlertDialogFragment newInstance(String message) { WPAlertDialogFragment adf = new WPAlertDialogFragment(); Bundle bundle = new Bundle(); bundle.putString("alert-message", message); adf.setArguments(bundle); return adf; } // XMLRPC Error public static WPAlertDialogFragment newInstance(String message, String error) { WPAlertDialogFragment adf = new WPAlertDialogFragment(); Bundle bundle = new Bundle(); bundle.putString("alert-message", message); bundle.putString("alert-error", error); adf.setArguments(bundle); isXMLRPC = true; return adf; } // Load More Posts Override Warning public static WPAlertDialogFragment newInstance(String message, String error, boolean loadMore) { WPAlertDialogFragment adf = new WPAlertDialogFragment(); Bundle bundle = new Bundle(); bundle.putString("alert-message", message); bundle.putString("alert-error", error); adf.setArguments(bundle); isLoadMore = true; return adf; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setCancelable(true); int style = DialogFragment.STYLE_NORMAL, theme = 0; setStyle(style, theme); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder b = new AlertDialog.Builder(getActivity()); if (isXMLRPC) { String error = this.getArguments().getString("alert-error"); if (error == null) error = getString(R.string.error_generic); String message = this.getArguments().getString("alert-message"); if (message == null) message = getString(R.string.error_generic); if (error.contains("code 403") || error.contains("code 503")) { //invalid credentials b.setIcon(android.R.drawable.ic_dialog_alert); b.setTitle(R.string.connection_error); if (WordPress.currentBlog.isDotcomFlag()) { // Remove wpcom password since it is no longer valid SharedPreferences.Editor editor = PreferenceManager .getDefaultSharedPreferences( this.getActivity().getApplicationContext()) .edit(); editor.remove(WordPress.WPCOM_PASSWORD_PREFERENCE); editor.commit(); b.setMessage(getResources().getText( R.string.incorrect_credentials) + " " + getResources().getText(R.string.please_sign_in)); b.setPositiveButton(R.string.sign_in, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent authIntent = new Intent( getActivity(), AccountSetupActivity.class); authIntent.putExtra("wpcom", true); authIntent.putExtra("auth-only", true); getActivity().startActivity(authIntent); } }); } else { b.setMessage(getResources().getText( R.string.incorrect_credentials) + " " + getResources().getText(R.string.load_settings)); b.setCancelable(true); b.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent settingsIntent = new Intent( getActivity(), BlogPreferencesActivity.class); getActivity().startActivity(settingsIntent); } }); b.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); } return b.create(); } else { b.setIcon(android.R.drawable.ic_dialog_alert); b.setTitle(R.string.connection_error); b.setMessage((error.contains("code 405")) ? error : message); b.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); b.setCancelable(true); return b.create(); } } else if (isLoadMore) { String error = this.getArguments().getString("alert-error"); String message = this.getArguments().getString("alert-message"); //invalid credentials b.setIcon(android.R.drawable.ic_dialog_alert); b.setTitle(error); b.setMessage(message); b.setCancelable(true); b.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { OnDialogConfirmListener act = (OnDialogConfirmListener) getActivity(); act.onDialogConfirm(); } }); b.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); return b.create(); } else { b.setTitle(R.string.error); b.setPositiveButton("OK", this); //b.setNegativeButton("Cancel", this); b.setMessage(this.getArguments().getString("alert-message")); return b.create(); } } public interface OnDialogConfirmListener { public void onDialogConfirm(); } @Override public void onClick(DialogInterface dialog, int which) { } }