package org.softeg.slartus.forpdacommon;/* * Created by slinkin on 21.04.2014. */ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.text.TextUtils; import java.util.Arrays; public class ActionSelectDialogFragment { public interface OkListener { public void execute(CharSequence value); } public static void showSaveNavigateActionDialog(final Context context, final String preferenceKey, final String selectedAction, final Runnable showTopicAction) { final String navigateAction = PreferenceManager.getDefaultSharedPreferences(context) .getString(preferenceKey, null); if (navigateAction == null || !selectedAction.equals(navigateAction)) { showSelectDialog(context, preferenceKey, selectedAction, showTopicAction); } else { showTopicAction.run(); } } public static void showSelectDialog(final Context context, final String preferenceKey, final String selectedAction, final Runnable showTopicAction) { new AlertDialog.Builder(context) .setTitle(R.string.default_action) .setMessage(R.string.assign_default) .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); PreferenceManager.getDefaultSharedPreferences(context) .edit().putString(preferenceKey, selectedAction).commit(); showTopicAction.run(); } }) .setNeutralButton(R.string.ask, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); PreferenceManager.getDefaultSharedPreferences(context) .edit().putString(preferenceKey, null).commit(); showTopicAction.run(); } }) .setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); showTopicAction.run(); } }) .create().show(); } public static void execute(final Context context, final String title, final String preferenceKey, CharSequence[] titles, final CharSequence[] values, final OkListener okListener, final String hintForChangeDefault) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); final String value = prefs.getString(preferenceKey, null); if (Arrays.asList(values).contains(value)) { okListener.execute(value); return; } final int[] selectedValue = {0}; new AlertDialog.Builder(context) .setSingleChoiceItems(titles, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { selectedValue[0] = i; } }) .setTitle(title) .setPositiveButton(R.string.always, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.dismiss(); final CharSequence newValue = values[selectedValue[0]]; PreferenceManager.getDefaultSharedPreferences(context) .edit() .putString(preferenceKey, newValue.toString()) .commit(); if (!TextUtils.isEmpty(hintForChangeDefault)) new AlertDialog.Builder(context) .setTitle(R.string.hint) .setMessage(hintForChangeDefault) .setCancelable(false) .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); okListener.execute(newValue); } }) .create().show(); else okListener.execute(newValue); } } ) .setNeutralButton(R.string.only_now, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.dismiss(); okListener.execute(values[selectedValue[0]]); } } ) .create() .show(); } }