summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ui/android/src/org/grammaticalframework/ui/android/TranslatorInputMethodService.java29
1 files changed, 21 insertions, 8 deletions
diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/TranslatorInputMethodService.java b/src/ui/android/src/org/grammaticalframework/ui/android/TranslatorInputMethodService.java
index 29c52c44a..d961b228a 100644
--- a/src/ui/android/src/org/grammaticalframework/ui/android/TranslatorInputMethodService.java
+++ b/src/ui/android/src/org/grammaticalframework/ui/android/TranslatorInputMethodService.java
@@ -67,6 +67,7 @@ public class TranslatorInputMethodService extends InputMethodService
}
private int mModeId;
+ private EditorInfo mAttribute;
private static TranslatorInputMethodService mInstance;
static TranslatorInputMethodService getInstance() {
@@ -98,6 +99,7 @@ public class TranslatorInputMethodService extends InputMethodService
!attribute.extras.getBoolean("show_language_toggle", true)) {
mModeId = R.string.internalKeyboardMode;
}
+ mAttribute = attribute;
mLanguageKeyboard = new TranslatorKeyboard(this, res, mModeId);
mSymbolsKeyboard = new TranslatorKeyboard(this, R.xml.symbols, mModeId);
mSymbolsShiftedKeyboard = new TranslatorKeyboard(this, R.xml.symbols_shift, mModeId);
@@ -169,7 +171,7 @@ public class TranslatorInputMethodService extends InputMethodService
mActionId = attribute.imeOptions & EditorInfo.IME_MASK_ACTION;
mCurKeyboard.setImeOptions(getResources(), attribute.imeOptions);
-
+
mInstance = this;
}
@@ -191,8 +193,9 @@ public class TranslatorInputMethodService extends InputMethodService
if (mInputView != null) {
mInputView.closing();
}
-
+
mInstance = null;
+ mAttribute = null;
}
@Override
@@ -504,11 +507,10 @@ public class TranslatorInputMethodService extends InputMethodService
}
void handleChangeSourceLanguage(Language newSource) {
- mLanguageKeyboard =
- new TranslatorKeyboard(this, newSource.getKeyboardResource(), mModeId);
+ updateLanguageKeyboard(newSource);
mSymbolsKeyboard.updateLanguageKeyLabels();
mSymbolsShiftedKeyboard.updateLanguageKeyLabels();
- mInputView.setKeyboard(mLanguageKeyboard);
+ mInputView.setKeyboard(mCurKeyboard);
}
void handleChangeTargetLanguage(Language newTarget) {
@@ -520,11 +522,22 @@ public class TranslatorInputMethodService extends InputMethodService
void handleSwitchLanguages() {
Language newSource = mTranslator.getSourceLanguage();
- mLanguageKeyboard =
- new TranslatorKeyboard(this, newSource.getKeyboardResource(), mModeId);
- mInputView.setKeyboard(mLanguageKeyboard);
+ updateLanguageKeyboard(newSource);
+ mSymbolsKeyboard.updateLanguageKeyLabels();
+ mSymbolsShiftedKeyboard.updateLanguageKeyLabels();
+ mInputView.setKeyboard(mCurKeyboard);
}
+ private void updateLanguageKeyboard(Language language) {
+ TranslatorKeyboard keyboard =
+ new TranslatorKeyboard(this, language.getKeyboardResource(), mModeId);
+ keyboard.setImeOptions(getResources(), mAttribute.imeOptions);
+ if (mCurKeyboard == mLanguageKeyboard) {
+ mCurKeyboard = keyboard;
+ }
+ mLanguageKeyboard = keyboard;
+ }
+
private void checkToggleCapsLock() {
long now = System.currentTimeMillis();
if (mLastShiftTime + 800 > now) {