package de.blau.android.dialogs; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.annotation.NonNull; 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; import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog.Builder; import android.support.v7.app.AppCompatDialog; import android.util.Log; import de.blau.android.R; import de.blau.android.contract.Urls; import de.blau.android.listener.DoNothingListener; import de.blau.android.util.ThemeUtils; /** * Simple alert dialog with an OK button that does nothing * @author simon * */ public class ForbiddenLogin extends DialogFragment { private static final String FRAGMENT_TAG = "forbidden_alert"; private static final String MESSAGE = "message"; private static final String DEBUG_TAG = ForbiddenLogin.class.getSimpleName(); private String message; static public void showDialog(FragmentActivity activity, String message) { dismissDialog(activity); FragmentManager fm = activity.getSupportFragmentManager(); ForbiddenLogin alertDialogFragment = newInstance(message); try { alertDialogFragment.show(fm, FRAGMENT_TAG); } catch (IllegalStateException isex) { Log.e(DEBUG_TAG,"showDialog",isex); } } private static void dismissDialog(FragmentActivity activity) { FragmentManager fm = activity.getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); Fragment fragment = fm.findFragmentByTag(FRAGMENT_TAG); try { if (fragment != null) { ft.remove(fragment); } ft.commit(); } catch (IllegalStateException isex) { Log.e(DEBUG_TAG,"dismissDialog",isex); } } static private ForbiddenLogin newInstance(String message) { ForbiddenLogin f = new ForbiddenLogin(); Bundle args = new Bundle(); args.putSerializable(MESSAGE, message); f.setArguments(args); f.setShowsDialog(true); return f; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCancelable(true); message = (String) getArguments().getSerializable(MESSAGE); } @NonNull @Override public AppCompatDialog onCreateDialog(Bundle savedInstanceState) { Builder builder = new AlertDialog.Builder(getActivity()); builder.setIcon(ThemeUtils.getResIdFromAttribute(getActivity(),R.attr.alert_dialog)); builder.setTitle(R.string.forbidden_login_title); if (message != null) { builder.setMessage(message); } DoNothingListener doNothingListener = new DoNothingListener(); builder.setNegativeButton(R.string.dismiss, doNothingListener); builder.setPositiveButton(R.string.go_to_openstreetmap, new OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(Urls.OSM))); } }); return builder.create(); } }