package com.foxykeep.datadroidpoc.dialogs; import com.foxykeep.datadroid.requestmanager.Request; import com.foxykeep.datadroidpoc.R; import android.app.AlertDialog.Builder; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; public final class ConnectionErrorDialogFragment extends DialogFragment { public interface ConnectionErrorDialogListener { public void connectionErrorDialogCancel(Request request); public void connectionErrorDialogRetry(Request request); } private static final String FRAGMENT_TAG = "com.foxykeep.datadroidpoc.dialogs.connectionErrorDialog"; private ConnectionErrorDialogListener mConnexionErrorDialogListener; private Request mRequest; private static ConnectionErrorDialogFragment newInstance(Request request, ConnectionErrorDialogListener connexionErrorDialogListener) { ConnectionErrorDialogFragment dialogFragment = new ConnectionErrorDialogFragment(); dialogFragment.mConnexionErrorDialogListener = connexionErrorDialogListener; dialogFragment.mRequest = request; return dialogFragment; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Builder b = new Builder(getActivity()); b.setTitle(R.string.dialog_error_connection_error_title); b.setMessage(R.string.dialog_error_connection_error_message); b.setIcon(android.R.drawable.ic_dialog_alert); setCancelable(true); b.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { if (mConnexionErrorDialogListener != null) { mConnexionErrorDialogListener.connectionErrorDialogCancel(mRequest); } } }); b.setPositiveButton(R.string.dialog_button_retry, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { if (mConnexionErrorDialogListener != null) { mConnexionErrorDialogListener.connectionErrorDialogRetry(mRequest); } } }); return b.create(); } @Override public void onCancel(DialogInterface dialog) { super.onCancel(dialog); if (mConnexionErrorDialogListener != null) { mConnexionErrorDialogListener.connectionErrorDialogCancel(mRequest); } } public static void show(FragmentActivity activity, Request request, ConnectionErrorDialogListener connexionErrrorDialogListener) { FragmentManager fragmentManager = activity.getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); Fragment prev = fragmentManager.findFragmentByTag(FRAGMENT_TAG); if (prev != null) { fragmentTransaction.remove(prev); } fragmentTransaction.addToBackStack(null); ConnectionErrorDialogFragment.newInstance(request, connexionErrrorDialogListener) .show(fragmentManager, FRAGMENT_TAG); } public static void dismiss(FragmentActivity activity) { FragmentManager fragmentManager = activity.getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); Fragment prev = fragmentManager.findFragmentByTag(FRAGMENT_TAG); if (prev != null) { fragmentTransaction.remove(prev); } fragmentTransaction.commit(); } }