aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/android/inputmethod/latin/LatinIME.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/inputmethod/latin/LatinIME.java')
-rw-r--r--src/com/android/inputmethod/latin/LatinIME.java82
1 files changed, 35 insertions, 47 deletions
diff --git a/src/com/android/inputmethod/latin/LatinIME.java b/src/com/android/inputmethod/latin/LatinIME.java
index 8056030f6..ee525b495 100644
--- a/src/com/android/inputmethod/latin/LatinIME.java
+++ b/src/com/android/inputmethod/latin/LatinIME.java
@@ -178,6 +178,7 @@ public class LatinIME extends InputMethodService
Resources mResources;
private String mLocale;
+ private LanguageSwitcher mLanguageSwitcher;
private StringBuilder mComposing = new StringBuilder();
private WordComposer mWord = new WordComposer();
@@ -244,10 +245,6 @@ public class LatinIME extends InputMethodService
List<String> candidates;
Map<String, List<CharSequence>> alternatives;
}
- private int mCurrentInputLocale = 0;
- private String mInputLanguage;
- private String[] mSelectedLanguageArray;
- private String mSelectedLanguagesList;
private boolean mRefreshKeyboardRequired;
Handler mHandler = new Handler() {
@@ -285,18 +282,19 @@ public class LatinIME extends InputMethodService
@Override public void onCreate() {
super.onCreate();
//setStatusIcon(R.drawable.ime_qwerty);
- mKeyboardSwitcher = new KeyboardSwitcher(this, this);
mResources = getResources();
final Configuration conf = mResources.getConfiguration();
- mInputLanguage = getPersistedInputLanguage();
- mSelectedLanguagesList = getSelectedInputLanguages();
- boolean enableMultipleLanguages = mSelectedLanguagesList != null
- && mSelectedLanguagesList.split(",").length > 1;
- if (mInputLanguage == null) {
- mInputLanguage = conf.locale.toString();
- }
- initSuggest(mInputLanguage);
- mKeyboardSwitcher.setInputLocale(conf.locale, enableMultipleLanguages);
+ final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ mLanguageSwitcher = new LanguageSwitcher(this);
+ mLanguageSwitcher.loadLocales(prefs);
+ mKeyboardSwitcher = new KeyboardSwitcher(this, this);
+ mKeyboardSwitcher.setLanguageSwitcher(mLanguageSwitcher);
+ boolean enableMultipleLanguages = mLanguageSwitcher.getLocaleCount() > 0;
+ String inputLanguage = mLanguageSwitcher.getInputLanguage();
+ if (inputLanguage == null) {
+ inputLanguage = conf.locale.toString();
+ }
+ initSuggest(inputLanguage);
mOrientation = conf.orientation;
mVibrateDuration = mResources.getInteger(R.integer.vibrate_duration_ms);
@@ -317,8 +315,7 @@ public class LatinIME extends InputMethodService
}
});
}
- PreferenceManager.getDefaultSharedPreferences(this)
- .registerOnSharedPreferenceChangeListener(this);
+ prefs.registerOnSharedPreferenceChangeListener(this);
}
private void initSuggest(String locale) {
@@ -429,7 +426,7 @@ public class LatinIME extends InputMethodService
if (mRefreshKeyboardRequired) {
mRefreshKeyboardRequired = false;
- toggleLanguage(true);
+ toggleLanguage(true, true);
}
mKeyboardSwitcher.makeKeyboards(false);
@@ -791,8 +788,7 @@ public class LatinIME extends InputMethodService
if (mKeyboardSwitcher == null) {
mKeyboardSwitcher = new KeyboardSwitcher(this, this);
}
- mKeyboardSwitcher.setInputLocale(new Locale(mInputLanguage),
- getSelectedInputLanguages() != null);
+ mKeyboardSwitcher.setLanguageSwitcher(mLanguageSwitcher);
if (mInputView != null) {
mKeyboardSwitcher.setVoiceMode(mEnableVoice, mVoiceOnPrimary);
}
@@ -919,7 +915,10 @@ public class LatinIME extends InputMethodService
showOptionsMenu();
break;
case LatinKeyboardView.KEYCODE_NEXT_LANGUAGE:
- toggleLanguage(false);
+ toggleLanguage(false, true);
+ break;
+ case LatinKeyboardView.KEYCODE_PREV_LANGUAGE:
+ toggleLanguage(false, false);
break;
case LatinKeyboardView.KEYCODE_SHIFT_LONGPRESS:
if (mCapsLock) {
@@ -1514,27 +1513,30 @@ public class LatinIME extends InputMethodService
}
}
- private void toggleLanguage(boolean reset) {
- final String [] languages = mSelectedLanguageArray;
- if (reset) mCurrentInputLocale = -1;
- mCurrentInputLocale = (mCurrentInputLocale + 1)
- % (languages != null ? languages.length : 1);
- mInputLanguage = languages != null ? languages[mCurrentInputLocale] :
- getResources().getConfiguration().locale.getLanguage();
+ private void toggleLanguage(boolean reset, boolean next) {
+ if (reset) {
+ mLanguageSwitcher.reset();
+ } else {
+ if (next) {
+ mLanguageSwitcher.next();
+ } else {
+ mLanguageSwitcher.prev();
+ }
+ }
int currentKeyboardMode = mKeyboardSwitcher.getKeyboardMode();
reloadKeyboards();
mKeyboardSwitcher.makeKeyboards(true);
mKeyboardSwitcher.setKeyboardMode(currentKeyboardMode, 0,
mEnableVoiceButton && mEnableVoice);
- initSuggest(mInputLanguage);
- persistInputLanguage(mInputLanguage);
+ initSuggest(mLanguageSwitcher.getInputLanguage());
+ mLanguageSwitcher.persist();
updateShiftKeyState(getCurrentInputEditorInfo());
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (PREF_SELECTED_LANGUAGES.equals(key)) {
- updateSelectedLanguages(sharedPreferences.getString(key, null));
+ mLanguageSwitcher.loadLocales(sharedPreferences);
mRefreshKeyboardRequired = true;
}
}
@@ -1556,6 +1558,8 @@ public class LatinIME extends InputMethodService
}
public void onRelease(int primaryCode) {
+ // Reset any drag flags in the keyboard
+ ((LatinKeyboard) mInputView.getKeyboard()).keyReleased();
//vibrate();
}
@@ -1750,16 +1754,7 @@ public class LatinIME extends InputMethodService
mAutoCorrectEnabled = sp.getBoolean(PREF_AUTO_COMPLETE,
mResources.getBoolean(R.bool.enable_autocorrect)) & mShowSuggestions;
updateCorrectionMode();
- String languageList = sp.getString(PREF_SELECTED_LANGUAGES, null);
- updateSelectedLanguages(languageList);
- }
-
- private void updateSelectedLanguages(String languageList) {
- if (languageList != null && languageList.length() > 1) {
- mSelectedLanguageArray = languageList.split(",");
- } else {
- mSelectedLanguageArray = null;
- }
+ mLanguageSwitcher.loadLocales(sp);
}
private String getPersistedInputLanguage() {
@@ -1767,13 +1762,6 @@ public class LatinIME extends InputMethodService
return sp.getString(PREF_INPUT_LANGUAGE, null);
}
- private void persistInputLanguage(String inputLanguage) {
- SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
- Editor editor = sp.edit();
- editor.putString(PREF_INPUT_LANGUAGE, inputLanguage);
- editor.commit();
- }
-
private String getSelectedInputLanguages() {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
return sp.getString(PREF_SELECTED_LANGUAGES, null);