package org.jorge.cmp.ui.fragment; import android.content.Context; import android.content.res.Resources; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceFragment; import android.view.MenuItem; import android.widget.Toast; import org.jorge.cmp.LoLin1Application; import org.jorge.cmp.R; import org.jorge.cmp.auth.LoLin1AccountAuthenticator; import org.jorge.cmp.datamodel.LoLin1Account; import org.jorge.cmp.datamodel.Realm; import org.jorge.cmp.io.prefs.PreferenceAssistant; /* * This file is part of LoLin1. * * LoLin1 is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * LoLin1 is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with LoLin1. If not, see <http://www.gnu.org/licenses/>. * * Created by Jorge Antonio Diaz-Benito Soriano. */ public class SettingsPreferenceFragment extends PreferenceFragment { private Context mContext; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(Boolean.TRUE); addPreferencesFromResource(R.xml.settings); final ListPreference langPreference = (ListPreference) findPreference(PreferenceAssistant .PREF_LANG); mContext = LoLin1Application.getInstance().getContext(); final Resources resources = mContext.getResources(); final Integer entriesArray, valuesArray; final LoLin1Account account = LoLin1AccountAuthenticator.loadAccount(mContext); final Realm.RealmEnum realmEnum = account == null ? Realm.RealmEnum.NONE : account .getRealmEnum(); switch (realmEnum) { case NONE: valuesArray = R.array.realm_na_locales; entriesArray = R.array.realm_na_languages; break; case BR: valuesArray = R.array.realm_br_locales; entriesArray = R.array.realm_br_languages; break; case EUNE: valuesArray = R.array.realm_eune_locales; entriesArray = R.array.realm_eune_languages; break; case EUW: valuesArray = R.array.realm_euw_locales; entriesArray = R.array.realm_euw_languages; break; case LAN: valuesArray = R.array.realm_lan_locales; entriesArray = R.array.realm_lan_languages; break; case LAS: valuesArray = R.array.realm_las_locales; entriesArray = R.array.realm_las_languages; break; case NA: valuesArray = R.array.realm_na_locales; entriesArray = R.array.realm_na_languages; break; case OCE: valuesArray = R.array.realm_oce_locales; entriesArray = R.array.realm_oce_languages; break; case RU: valuesArray = R.array.realm_ru_locales; entriesArray = R.array.realm_ru_languages; break; case TR: valuesArray = R.array.realm_tr_locales; entriesArray = R.array.realm_tr_languages; break; default: throw new IllegalArgumentException("Illegal realm parsed during pref_lang setup: " + "" + realmEnum); } langPreference.setEntries(resources.getStringArray(entriesArray)); langPreference.setEntryValues(resources.getStringArray(valuesArray)); langPreference.setDefaultValue(resources.getStringArray(valuesArray)[0]); langPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final Boolean ret = !PreferenceAssistant.readSharedString(mContext, PreferenceAssistant.PREF_LANG, "null").contentEquals(newValue.toString()); if (ret) Toast.makeText(mContext, R.string.locale_change_confirmation, Toast.LENGTH_SHORT).show(); return ret; } }); } @Override public boolean onOptionsItemSelected(MenuItem item) { return getActivity().onOptionsItemSelected(item); } }