store the source and target languages for the Android UI in a preference file

This commit is contained in:
kr.angelov
2013-10-31 14:16:37 +00:00
parent 5e584c5c3f
commit 80143459c6
2 changed files with 34 additions and 2 deletions

View File

@@ -8,4 +8,5 @@
<string name="open_image">Opening</string>
<string name="mic_input">Speech Input</string>
<string name="keyboard_input">Keyboard Input</string>
<string name="global_preferences_key">org.grammaticalframework.ui.android.GLOBAL_PREFERENCES</string>
</resources>

View File

@@ -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<Language> 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) {