package fr.tvbarthel.apps.simplethermometer.dialogfragments; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.DialogFragment; import android.widget.ArrayAdapter; import fr.tvbarthel.apps.simplethermometer.R; import fr.tvbarthel.apps.simplethermometer.utils.PreferenceUtils; /** * A dialog fragment used to change and store the temperature unit */ public class TemperatureUnitPickerDialogFragment extends DialogFragment { private static final String BUNDLE_TEMPERATURE_UNIT_NAMES = "BundleTemperatureUnitNames"; private static final String BUNDLE_TEMPERATURE_UNIT_SYMBOLS = "BundleTemperatureUnitSymbols"; public static TemperatureUnitPickerDialogFragment newInstance(String[] temperatureUnitNames, String[] temperatureUnitSymbols) { TemperatureUnitPickerDialogFragment fragment = new TemperatureUnitPickerDialogFragment(); //Put the temperature unit names and symbols in the fragment arguments Bundle arguments = new Bundle(); arguments.putStringArray(BUNDLE_TEMPERATURE_UNIT_NAMES, temperatureUnitNames); arguments.putStringArray(BUNDLE_TEMPERATURE_UNIT_SYMBOLS, temperatureUnitSymbols); fragment.setArguments(arguments); return fragment; } /* DialogFragment Overrides */ @Override public Dialog onCreateDialog(Bundle savedInstanceState) { //Retrieve information from the arguments Bundle arguments = getArguments(); final String[] temperatureUnitNames = arguments.getStringArray(BUNDLE_TEMPERATURE_UNIT_NAMES); final String[] temperatureUnitSymbols = arguments.getStringArray(BUNDLE_TEMPERATURE_UNIT_SYMBOLS); //Create an AlertDialog to display the different temperature unit that can be chosen AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.temperature_unit_picker_dialog_fragment_title); final ArrayAdapter<String> arrayAdapterColorNames = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_expandable_list_item_1, temperatureUnitNames); builder.setAdapter(arrayAdapterColorNames, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { SharedPreferences defaultPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); SharedPreferences.Editor editor = defaultPreferences.edit(); editor.putString(PreferenceUtils.PREF_KEY_TEMPERATURE_UNIT_STRING, temperatureUnitSymbols[which]); editor.commit(); } }); builder.setCancelable(true); builder.setNegativeButton(android.R.string.cancel, null); builder.setInverseBackgroundForced(true); return builder.create(); } }