diff --git a/src/ui/android/res/values/strings.xml b/src/ui/android/res/values/strings.xml index af659fcec..57e20027d 100644 --- a/src/ui/android/res/values/strings.xml +++ b/src/ui/android/res/values/strings.xml @@ -8,4 +8,5 @@ Opening Speech Input Keyboard Input + org.grammaticalframework.ui.android.GLOBAL_PREFERENCES diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java index 356bb89ce..c7c438e02 100644 --- a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java +++ b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java @@ -1,6 +1,7 @@ package org.grammaticalframework.ui.android; import android.content.Context; +import android.content.SharedPreferences; import android.util.Log; import org.grammaticalframework.pgf.Concr; @@ -38,10 +39,38 @@ public class Translator { private PGF mPGF; private Thread mGrammarLoader; + private static final String SOURCE_LANG_KEY = "source_lang"; + private static final String TARGET_LANG_KEY = "target_lang"; + + private SharedPreferences mSharedPref; + + private Language getPrefLang(String key, int def) { + int index = mSharedPref.getInt(key, def); + if (index < 0 || index >= mLanguages.length) + index = def; + return mLanguages[index]; + } + + private void setPrefLang(String key, Language def) { + for (int index = 0; index < mLanguages.length; index++) { + if (def == mLanguages[index]) { + SharedPreferences.Editor editor = mSharedPref.edit(); + editor.putInt(key, index); + editor.commit(); + break; + } + } + } public Translator(Context context) { mGrammarLoader = new GrammarLoader(context); mGrammarLoader.start(); + + mSharedPref = context.getSharedPreferences( + context.getString(R.string.global_preferences_key), Context.MODE_PRIVATE); + + mSourceLanguage = getPrefLang(SOURCE_LANG_KEY, 0); + mTargetLanguage = getPrefLang(TARGET_LANG_KEY, 1); } public List getAvailableSourceLanguages() { @@ -54,18 +83,20 @@ public class Translator { public void setSourceLanguage(Language language) { mSourceLanguage = language; + setPrefLang(SOURCE_LANG_KEY, language); } public void setTargetLanguage(Language language) { mTargetLanguage = language; + setPrefLang(TARGET_LANG_KEY, language); } public Language getSourceLanguage() { - return mSourceLanguage != null ? mSourceLanguage : mLanguages[0]; + return mSourceLanguage; } public Language getTargetLanguage() { - return mTargetLanguage != null ? mTargetLanguage : mLanguages[1]; + return mTargetLanguage; } private static String explode(String in) {