Refactor to remove KeyboardSwitcher.setVoiceMode
This change also renames KeyboardSwitcher.makeKeyboards to refreshKeyboardCache. Change-Id: I76897562d5876a53364dc378e7800ab92fb2a37b
This commit is contained in:
parent
02d7bdead6
commit
507495efd5
2 changed files with 45 additions and 63 deletions
|
@ -153,8 +153,8 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
|
|||
/** mIsAutoCompletionActive indicates that auto completed word will be input instead of
|
||||
* what user actually typed. */
|
||||
private boolean mIsAutoCompletionActive;
|
||||
private boolean mHasVoice;
|
||||
private boolean mVoiceOnPrimary;
|
||||
private boolean mVoiceButtonEnabled;
|
||||
private boolean mVoiceButtonOnPrimary;
|
||||
private int mSymbolsModeState = SYMBOLS_MODE_STATE_NONE;
|
||||
|
||||
// Indicates whether or not we have the settings key
|
||||
|
@ -197,26 +197,26 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
|
|||
mInputLocale = mLanguageSwitcher.getInputLocale();
|
||||
}
|
||||
|
||||
private KeyboardId makeSymbolsId(boolean hasVoice) {
|
||||
private KeyboardId makeSymbolsId(boolean voiceButtonEnabled) {
|
||||
final int mode = mMode == MODE_NONE ? MODE_TEXT : mMode;
|
||||
return new KeyboardId(KBD_SYMBOLS[getCharColorId()], mHasSettingsKey ?
|
||||
SYMBOLS_WITH_SETTINGS_KEY_MODES[mode] : SYMBOLS_MODES[mode],
|
||||
false, hasVoice);
|
||||
false, voiceButtonEnabled);
|
||||
}
|
||||
|
||||
private KeyboardId makeSymbolsShiftedId(boolean hasVoice) {
|
||||
private KeyboardId makeSymbolsShiftedId(boolean voiceButtonEnabled) {
|
||||
final int mode = mMode == MODE_NONE ? MODE_TEXT : mMode;
|
||||
return new KeyboardId(KBD_SYMBOLS_SHIFT[getCharColorId()], mHasSettingsKey ?
|
||||
SYMBOLS_WITH_SETTINGS_KEY_MODES[mode] : SYMBOLS_MODES[mode],
|
||||
false, hasVoice);
|
||||
false, voiceButtonEnabled);
|
||||
}
|
||||
|
||||
private void makeSymbolsKeyboardIds() {
|
||||
mSymbolsId = makeSymbolsId(mHasVoice && !mVoiceOnPrimary);
|
||||
mSymbolsShiftedId = makeSymbolsShiftedId(mHasVoice && !mVoiceOnPrimary);
|
||||
mSymbolsId = makeSymbolsId(mVoiceButtonEnabled && !mVoiceButtonOnPrimary);
|
||||
mSymbolsShiftedId = makeSymbolsShiftedId(mVoiceButtonEnabled && !mVoiceButtonOnPrimary);
|
||||
}
|
||||
|
||||
public void makeKeyboards(boolean forceCreate) {
|
||||
public void refreshKeyboardCache(boolean forceCreate) {
|
||||
makeSymbolsKeyboardIds();
|
||||
if (forceCreate) mKeyboards.clear();
|
||||
// Configuration change is coming after the keyboard gets recreated. So don't rely on that.
|
||||
|
@ -237,18 +237,18 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
|
|||
public final int mXml;
|
||||
public final int mKeyboardMode; /** A KEYBOARDMODE_XXX value */
|
||||
public final boolean mEnableShiftLock;
|
||||
public final boolean mHasVoice;
|
||||
public final boolean mVoiceButtonEnabled;
|
||||
|
||||
private final int mHashCode;
|
||||
|
||||
public KeyboardId(int xml, int mode, boolean enableShiftLock, boolean hasVoice) {
|
||||
public KeyboardId(int xml, int mode, boolean enableShiftLock, boolean voiceButtonEnabled) {
|
||||
this.mXml = xml;
|
||||
this.mKeyboardMode = mode;
|
||||
this.mEnableShiftLock = enableShiftLock;
|
||||
this.mHasVoice = hasVoice;
|
||||
this.mVoiceButtonEnabled = voiceButtonEnabled;
|
||||
|
||||
this.mHashCode = Arrays.hashCode(new Object[] {
|
||||
xml, mode, enableShiftLock, hasVoice
|
||||
xml, mode, enableShiftLock, voiceButtonEnabled
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -261,7 +261,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
|
|||
return other.mXml == this.mXml
|
||||
&& other.mKeyboardMode == this.mKeyboardMode
|
||||
&& other.mEnableShiftLock == this.mEnableShiftLock
|
||||
&& other.mHasVoice == this.mHasVoice;
|
||||
&& other.mVoiceButtonEnabled == this.mVoiceButtonEnabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -270,36 +270,31 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
|
|||
}
|
||||
}
|
||||
|
||||
public void setVoiceMode(boolean enableVoice, boolean voiceOnPrimary) {
|
||||
if (enableVoice != mHasVoice || voiceOnPrimary != mVoiceOnPrimary) {
|
||||
mKeyboards.clear();
|
||||
}
|
||||
mHasVoice = enableVoice;
|
||||
mVoiceOnPrimary = voiceOnPrimary;
|
||||
setKeyboardMode(mMode, mImeOptions, mHasVoice, mIsSymbols);
|
||||
}
|
||||
|
||||
private boolean hasVoiceButton(boolean isSymbols) {
|
||||
return mHasVoice && (isSymbols != mVoiceOnPrimary);
|
||||
return mVoiceButtonEnabled && (isSymbols != mVoiceButtonOnPrimary);
|
||||
}
|
||||
|
||||
public void setKeyboardMode(int mode, int imeOptions, boolean enableVoice) {
|
||||
public void setKeyboardMode(int mode, int imeOptions, boolean voiceButtonEnabled,
|
||||
boolean voiceButtonOnPrimary) {
|
||||
mSymbolsModeState = SYMBOLS_MODE_STATE_NONE;
|
||||
try {
|
||||
setKeyboardMode(mode, imeOptions, enableVoice, false);
|
||||
setKeyboardModeInternal(mode, imeOptions, voiceButtonEnabled, voiceButtonOnPrimary,
|
||||
false);
|
||||
} catch (RuntimeException e) {
|
||||
LatinImeLogger.logOnException(mode + "," + imeOptions, e);
|
||||
}
|
||||
}
|
||||
|
||||
private void setKeyboardMode(int mode, int imeOptions, boolean enableVoice, boolean isSymbols) {
|
||||
private void setKeyboardModeInternal(int mode, int imeOptions, boolean voiceButtonEnabled,
|
||||
boolean voiceButtonOnPrimary, boolean isSymbols) {
|
||||
if (mInputView == null) return;
|
||||
mMode = mode;
|
||||
mImeOptions = imeOptions;
|
||||
makeSymbolsKeyboardIds();
|
||||
if (enableVoice != mHasVoice) {
|
||||
if (voiceButtonEnabled != mVoiceButtonEnabled || voiceButtonOnPrimary != mVoiceButtonOnPrimary) {
|
||||
mKeyboards.clear();
|
||||
mHasVoice = enableVoice;
|
||||
mVoiceButtonEnabled = voiceButtonEnabled;
|
||||
mVoiceButtonOnPrimary = voiceButtonOnPrimary;
|
||||
}
|
||||
mIsSymbols = isSymbols;
|
||||
|
||||
|
@ -333,7 +328,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
|
|||
orig.updateConfiguration(conf, null);
|
||||
keyboard = new LatinKeyboard(mInputMethodService, id.mXml, id.mKeyboardMode);
|
||||
keyboard.setVoiceMode(hasVoiceButton(id.mXml == R.xml.kbd_symbols
|
||||
|| id.mXml == R.xml.kbd_symbols_black), mHasVoice);
|
||||
|| id.mXml == R.xml.kbd_symbols_black), mVoiceButtonEnabled);
|
||||
keyboard.setLanguageSwitcher(mLanguageSwitcher, mIsAutoCompletionActive, isBlackSym());
|
||||
|
||||
if (id.mEnableShiftLock) {
|
||||
|
@ -434,7 +429,8 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
|
|||
}
|
||||
|
||||
public void toggleSymbols() {
|
||||
setKeyboardMode(mMode, mImeOptions, mHasVoice, !mIsSymbols);
|
||||
setKeyboardModeInternal(mMode, mImeOptions, mVoiceButtonEnabled, mVoiceButtonOnPrimary,
|
||||
!mIsSymbols);
|
||||
if (mIsSymbols) {
|
||||
mSymbolsModeState = SYMBOLS_MODE_STATE_BEGIN;
|
||||
} else {
|
||||
|
|
|
@ -186,7 +186,6 @@ public class LatinIME extends InputMethodService
|
|||
private boolean mImmediatelyAfterVoiceInput;
|
||||
private boolean mShowingVoiceSuggestions;
|
||||
private boolean mVoiceInputHighlighted;
|
||||
private boolean mEnableVoiceButton;
|
||||
private CharSequence mBestWord;
|
||||
private boolean mPredictionOn;
|
||||
private boolean mCompletionOn;
|
||||
|
@ -209,8 +208,8 @@ public class LatinIME extends InputMethodService
|
|||
private boolean mShowSuggestions;
|
||||
private boolean mIsShowingHint;
|
||||
private int mCorrectionMode;
|
||||
private boolean mEnableVoice = true;
|
||||
private boolean mVoiceOnPrimary;
|
||||
private boolean mVoiceButtonEnabled;
|
||||
private boolean mVoiceButtonOnPrimary;
|
||||
private int mOrientation;
|
||||
private List<CharSequence> mSuggestPuncList;
|
||||
// Keep track of the last selection range to decide if we need to show word alternatives
|
||||
|
@ -530,16 +529,13 @@ public class LatinIME extends InputMethodService
|
|||
@Override
|
||||
public View onCreateInputView() {
|
||||
mKeyboardSwitcher.recreateInputView();
|
||||
mKeyboardSwitcher.makeKeyboards(true);
|
||||
mKeyboardSwitcher.setKeyboardMode(
|
||||
KeyboardSwitcher.MODE_TEXT, 0,
|
||||
shouldShowVoiceButton(makeFieldContext(), getCurrentInputEditorInfo()));
|
||||
mKeyboardSwitcher.refreshKeyboardCache(true);
|
||||
return mKeyboardSwitcher.getInputView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateCandidatesView() {
|
||||
mKeyboardSwitcher.makeKeyboards(true);
|
||||
mKeyboardSwitcher.refreshKeyboardCache(true);
|
||||
mCandidateViewContainer = (LinearLayout) getLayoutInflater().inflate(
|
||||
R.layout.candidates, null);
|
||||
mCandidateView = (CandidateView) mCandidateViewContainer.findViewById(R.id.candidates);
|
||||
|
@ -572,7 +568,7 @@ public class LatinIME extends InputMethodService
|
|||
toggleLanguage(true, true);
|
||||
}
|
||||
|
||||
mKeyboardSwitcher.makeKeyboards(false);
|
||||
mKeyboardSwitcher.refreshKeyboardCache(false);
|
||||
|
||||
TextEntryState.newSession(this);
|
||||
|
||||
|
@ -666,10 +662,9 @@ public class LatinIME extends InputMethodService
|
|||
mDeleteCount = 0;
|
||||
mJustAddedAutoSpace = false;
|
||||
|
||||
loadSettings();
|
||||
mEnableVoiceButton = shouldShowVoiceButton(makeFieldContext(), attribute);
|
||||
mKeyboardSwitcher.setKeyboardMode(mode, attribute.imeOptions,
|
||||
mEnableVoiceButton && mEnableVoice);
|
||||
loadSettings(attribute);
|
||||
mKeyboardSwitcher.setKeyboardMode(mode, attribute.imeOptions, mVoiceButtonEnabled,
|
||||
mVoiceButtonOnPrimary);
|
||||
updateShiftKeyState(attribute);
|
||||
|
||||
setCandidatesViewShownInternal(isCandidateStripVisible() || mCompletionOn,
|
||||
|
@ -1031,11 +1026,8 @@ public class LatinIME extends InputMethodService
|
|||
|
||||
private void reloadKeyboards() {
|
||||
mKeyboardSwitcher.setLanguageSwitcher(mLanguageSwitcher);
|
||||
if (mKeyboardSwitcher.getInputView() != null
|
||||
&& mKeyboardSwitcher.getKeyboardMode() != KeyboardSwitcher.MODE_NONE) {
|
||||
mKeyboardSwitcher.setVoiceMode(mEnableVoice && mEnableVoiceButton, mVoiceOnPrimary);
|
||||
}
|
||||
mKeyboardSwitcher.makeKeyboards(true);
|
||||
int mode = mKeyboardSwitcher.getKeyboardMode();
|
||||
mKeyboardSwitcher.setKeyboardMode(mode, 0, mVoiceButtonEnabled, mVoiceButtonOnPrimary);
|
||||
}
|
||||
|
||||
private void commitTyped(InputConnection inputConnection) {
|
||||
|
@ -2287,9 +2279,9 @@ public class LatinIME extends InputMethodService
|
|||
}
|
||||
int currentKeyboardMode = mKeyboardSwitcher.getKeyboardMode();
|
||||
reloadKeyboards();
|
||||
mKeyboardSwitcher.makeKeyboards(true);
|
||||
mKeyboardSwitcher.setKeyboardMode(currentKeyboardMode, 0,
|
||||
mEnableVoiceButton && mEnableVoice);
|
||||
mKeyboardSwitcher.refreshKeyboardCache(true);
|
||||
mKeyboardSwitcher.setKeyboardMode(currentKeyboardMode, 0, mVoiceButtonEnabled,
|
||||
mVoiceButtonOnPrimary);
|
||||
initSuggest(mLanguageSwitcher.getInputLanguage());
|
||||
mLanguageSwitcher.persist();
|
||||
updateShiftKeyState(getCurrentInputEditorInfo());
|
||||
|
@ -2525,7 +2517,7 @@ public class LatinIME extends InputMethodService
|
|||
launchSettings(LatinIMEDebugSettings.class);
|
||||
}
|
||||
|
||||
protected void launchSettings (Class<? extends PreferenceActivity> settingsClass) {
|
||||
protected void launchSettings(Class<? extends PreferenceActivity> settingsClass) {
|
||||
handleClose();
|
||||
Intent intent = new Intent();
|
||||
intent.setClass(LatinIME.this, settingsClass);
|
||||
|
@ -2533,7 +2525,7 @@ public class LatinIME extends InputMethodService
|
|||
startActivity(intent);
|
||||
}
|
||||
|
||||
private void loadSettings() {
|
||||
private void loadSettings(EditorInfo attribute) {
|
||||
// Get the settings preferences
|
||||
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
mVibrateOn = sp.getBoolean(PREF_VIBRATE_ON, false);
|
||||
|
@ -2568,15 +2560,9 @@ public class LatinIME extends InputMethodService
|
|||
if (VOICE_INSTALLED) {
|
||||
final String voiceMode = sp.getString(PREF_VOICE_MODE,
|
||||
getString(R.string.voice_mode_main));
|
||||
boolean enableVoice = !voiceMode.equals(getString(R.string.voice_mode_off))
|
||||
&& mEnableVoiceButton;
|
||||
boolean voiceOnPrimary = voiceMode.equals(getString(R.string.voice_mode_main));
|
||||
if (mKeyboardSwitcher != null &&
|
||||
(enableVoice != mEnableVoice || voiceOnPrimary != mVoiceOnPrimary)) {
|
||||
mKeyboardSwitcher.setVoiceMode(enableVoice, voiceOnPrimary);
|
||||
}
|
||||
mEnableVoice = enableVoice;
|
||||
mVoiceOnPrimary = voiceOnPrimary;
|
||||
mVoiceButtonEnabled = !voiceMode.equals(getString(R.string.voice_mode_off))
|
||||
&& shouldShowVoiceButton(makeFieldContext(), attribute);
|
||||
mVoiceButtonOnPrimary = voiceMode.equals(getString(R.string.voice_mode_main));
|
||||
}
|
||||
updateCorrectionMode();
|
||||
updateAutoTextEnabled(mResources.getConfiguration().locale);
|
||||
|
|
Loading…
Reference in a new issue