package org.witness.informacam.app.screens.wizard; import java.util.Locale; import org.witness.informacam.app.utils.Constants.Codes; import org.witness.informacam.app.utils.Constants.WizardActivityListener; import org.witness.informacam.app.views.DropdownSpinner; import org.witness.informacam.app.views.DropdownSpinner.OnSelectionChangedListener; import org.witness.informacam.app.R; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListAdapter; import android.widget.Spinner; import android.widget.TextView; public class WizardSelectLanguage extends Fragment implements OnClickListener, OnSelectionChangedListener { View rootView; Activity a; Spinner languageChoices; Button commit; int choice = 0; String langKey; Handler handler = new Handler(); private String[] mCodes; private DropdownSpinner mDropdownLanguage; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater li, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(li, container, savedInstanceState); rootView = li.inflate(R.layout.fragment_wizard_select_language, null); mDropdownLanguage = (DropdownSpinner) rootView.findViewById(R.id.languagePopup); mCodes = getResources().getStringArray(R.array.locales); ListAdapter adapter = new LanguageListAdapter(rootView.getContext(), rootView.getContext().getResources().getStringArray(R.array.languages_)); mDropdownLanguage.setAdapter(adapter); mDropdownLanguage.setOnSelectionChangedListener(this); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(rootView.getContext()); // What is currently set? // Locale locale = a.getBaseContext().getResources().getConfiguration().locale; String currentLanguage = locale.getLanguage(); // What is prefered language? // String preferedLanguage = sp.getString(Codes.Extras.LOCALE_PREF_KEY, null); if (preferedLanguage == null) { preferedLanguage = currentLanguage; } boolean different = !currentLanguage.equals(preferedLanguage); if (!selectLanguageByLanguageCode(currentLanguage, different)) selectLanguageByLanguageCode("en", true); commit = (Button) rootView.findViewById(R.id.wizard_commit); commit.setOnClickListener(this); return rootView; } private boolean selectLanguageByLanguageCode(String code, boolean sendNotification) { for (int i = 0; i < mCodes.length; i++) { if (mCodes[i].equals(code)) { mDropdownLanguage.setCurrentSelection(i, sendNotification); return true; } } return false; } @Override public void onAttach(Activity a) { super.onAttach(a); this.a = a; } private class LanguageListAdapter extends ArrayAdapter<String> { public LanguageListAdapter(Context context, String[] languages) { super(context, R.layout.wizard_language_item, R.id.tvLanguageName, languages); } @Override public View getView(int position, View convertView, ViewGroup parent) { // User super class to create the View View v = super.getView(position, convertView, parent); TextView tv = (TextView) v.findViewById(R.id.tvLanguageName); tv.setText(getItem(position)); return v; } } @Override public void onClick(View v) { if (v == commit) { if (a instanceof WizardActivityListener) { ((WizardActivityListener) a).onLanguageConfirmed(); } } } @Override public void onSelectionChanged(int position) { if (a instanceof WizardActivityListener) { ((WizardActivityListener) a).onLanguageSelected(mCodes[position]); } }; }