Remove direct calls of setKeyboardXXX from KeyboardSwitcher

These calls, setAlphabetKeyboard, setSymbolsKeyboard, and
setSymbolsShiftedKeyboard have to be call backed from KeyboardState.

Bug: 5708602
Change-Id: Ibbe1a21bd10bf942e17886869c0ab0fa1735b87e
This commit is contained in:
Tadashi G. Takaoka 2011-12-08 21:03:25 +09:00
parent d52e760530
commit 96c56cb577
3 changed files with 54 additions and 51 deletions

View file

@ -163,7 +163,6 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
mKeyboardView.setKeyboard(keyboard); mKeyboardView.setKeyboard(keyboard);
mCurrentInputView.setKeyboardGeometry(keyboard.mTopPadding); mCurrentInputView.setKeyboardGeometry(keyboard.mTopPadding);
mCurrentId = keyboard.mId; mCurrentId = keyboard.mId;
mState.onSetKeyboard(isAlphabetMode());
updateShiftLockState(keyboard); updateShiftLockState(keyboard);
mKeyboardView.setKeyPreviewPopupEnabled( mKeyboardView.setKeyPreviewPopupEnabled(
Settings.Values.isKeyPreviewPopupEnabled(mPrefs, mResources), Settings.Values.isKeyPreviewPopupEnabled(mPrefs, mResources),
@ -361,15 +360,7 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
if (DEBUG_STATE) { if (DEBUG_STATE) {
Log.d(TAG, "toggleShift: " + mState); Log.d(TAG, "toggleShift: " + mState);
} }
if (isAlphabetMode()) { mState.onToggleShift(isAlphabetMode(), isSymbolShifted());
setShifted(mState.isShiftedOrShiftLocked() ? UNSHIFT : MANUAL_SHIFT);
} else {
if (isSymbolShifted()) {
setSymbolsKeyboard();
} else {
setSymbolsShiftedKeyboard();
}
}
} }
/** /**
@ -379,31 +370,17 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
if (DEBUG_STATE) { if (DEBUG_STATE) {
Log.d(TAG, "toggleCapsLock: " + mState); Log.d(TAG, "toggleCapsLock: " + mState);
} }
if (isAlphabetMode()) { mState.onToggleCapsLock(isAlphabetMode());
if (mState.isShiftLocked()) {
setShiftLocked(false);
// TODO: Remove this.
// Shift key is long pressed while caps lock state, we will toggle back to normal
// state. And mark as if shift key is released.
mState.onReleaseCapsLock();
} else {
setShiftLocked(true);
}
}
} }
/** /**
* Toggle keyboard mode triggered by user touch event. * Toggle between alphabet and symbols modes triggered by user touch event.
*/ */
public void toggleKeyboardMode() { public void toggleAlphabetAndSymbols() {
if (DEBUG_STATE) { if (DEBUG_STATE) {
Log.d(TAG, "toggleKeyboardMode: " + mState); Log.d(TAG, "toggleAlphabetAndSymbols: " + mState);
}
if (isAlphabetMode()) {
setSymbolsKeyboard();
} else {
setAlphabetKeyboard();
} }
mState.onToggleAlphabetAndSymbols(isAlphabetMode());
} }
/** /**
@ -463,7 +440,6 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
// Implements {@link KeyboardState.SwitchActions}. // Implements {@link KeyboardState.SwitchActions}.
@Override @Override
public void setSymbolsKeyboard() { public void setSymbolsKeyboard() {
mState.onSaveShiftLockState();
setKeyboard(getKeyboard(mSymbolsKeyboardId)); setKeyboard(getKeyboard(mSymbolsKeyboardId));
} }
@ -471,7 +447,6 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
@Override @Override
public void setAlphabetKeyboard() { public void setAlphabetKeyboard() {
setKeyboard(getKeyboard(mMainKeyboardId)); setKeyboard(getKeyboard(mMainKeyboardId));
mState.onRestoreShiftLockState();
} }
// TODO: Remove this method // TODO: Remove this method

View file

@ -105,12 +105,12 @@ public class KeyboardState {
+ " shiftLocked=" + state.mIsShiftLocked + " shift=" + state.mIsShifted); + " shiftLocked=" + state.mIsShiftLocked + " shift=" + state.mIsShifted);
} }
if (!state.mIsValid || state.mIsAlphabetMode) { if (!state.mIsValid || state.mIsAlphabetMode) {
mSwitchActions.setAlphabetKeyboard(); setAlphabetKeyboard();
} else { } else {
if (state.mIsShifted) { if (state.mIsShifted) {
mSwitchActions.setSymbolsShiftedKeyboard(); setSymbolsShiftedKeyboard();
} else { } else {
mSwitchActions.setSymbolsKeyboard(); setSymbolsKeyboard();
} }
} }
@ -126,11 +126,6 @@ public class KeyboardState {
} }
} }
// TODO: Get rid of this method
public void onSetKeyboard(boolean isAlphabetMode) {
mSwitchState = isAlphabetMode ? SWITCH_STATE_ALPHA : SWITCH_STATE_SYMBOL_BEGIN;
}
public boolean isShiftLocked() { public boolean isShiftLocked() {
return mKeyboardShiftState.isShiftLocked(); return mKeyboardShiftState.isShiftLocked();
} }
@ -172,32 +167,36 @@ public class KeyboardState {
private void toggleAlphabetAndSymbols(boolean isAlphabetMode) { private void toggleAlphabetAndSymbols(boolean isAlphabetMode) {
if (isAlphabetMode) { if (isAlphabetMode) {
mSwitchActions.setSymbolsKeyboard(); setSymbolsKeyboard();
} else { } else {
mSwitchActions.setAlphabetKeyboard(); setAlphabetKeyboard();
} }
} }
private void toggleShiftInSymbols(boolean isSymbolShifted) { private void toggleShiftInSymbols(boolean isSymbolShifted) {
if (isSymbolShifted) { if (isSymbolShifted) {
mSwitchActions.setSymbolsKeyboard(); setSymbolsKeyboard();
} else { } else {
mSwitchActions.setSymbolsShiftedKeyboard(); setSymbolsShiftedKeyboard();
} }
} }
public void onRestoreShiftLockState() { private void setAlphabetKeyboard() {
mSwitchActions.setAlphabetKeyboard();
mSwitchState = SWITCH_STATE_ALPHA;
mSwitchActions.setShiftLocked(mPrevMainKeyboardWasShiftLocked); mSwitchActions.setShiftLocked(mPrevMainKeyboardWasShiftLocked);
mPrevMainKeyboardWasShiftLocked = false; mPrevMainKeyboardWasShiftLocked = false;
} }
public void onSaveShiftLockState() { private void setSymbolsKeyboard() {
mPrevMainKeyboardWasShiftLocked = isShiftLocked(); mPrevMainKeyboardWasShiftLocked = isShiftLocked();
mSwitchActions.setSymbolsKeyboard();
mSwitchState = SWITCH_STATE_SYMBOL_BEGIN;
} }
// TODO: Remove this method. private void setSymbolsShiftedKeyboard() {
public void onReleaseCapsLock() { mSwitchActions.setSymbolsShiftedKeyboard();
mShiftKeyState.onRelease(); mSwitchState = SWITCH_STATE_SYMBOL_BEGIN;
} }
// TODO: Get rid of isAlphabetMode argument. // TODO: Get rid of isAlphabetMode argument.
@ -384,7 +383,7 @@ public class KeyboardState {
} }
// Snap back to alpha keyboard mode immediately if user types a quote character. // Snap back to alpha keyboard mode immediately if user types a quote character.
if (isLayoutSwitchBackCharacter(code)) { if (isLayoutSwitchBackCharacter(code)) {
mSwitchActions.setAlphabetKeyboard(); setAlphabetKeyboard();
} }
break; break;
case SWITCH_STATE_SYMBOL: case SWITCH_STATE_SYMBOL:
@ -392,12 +391,41 @@ public class KeyboardState {
// Snap back to alpha keyboard mode if user types one or more non-space/enter // Snap back to alpha keyboard mode if user types one or more non-space/enter
// characters followed by a space/enter or a quote character. // characters followed by a space/enter or a quote character.
if (isSpaceCharacter(code) || isLayoutSwitchBackCharacter(code)) { if (isSpaceCharacter(code) || isLayoutSwitchBackCharacter(code)) {
mSwitchActions.setAlphabetKeyboard(); setAlphabetKeyboard();
} }
break; break;
} }
} }
// TODO: Get rid of isAlphabetMode and isSymbolShifted arguments.
public void onToggleShift(boolean isAlphabetMode, boolean isSymbolShifted) {
if (isAlphabetMode) {
mSwitchActions.setShifted(
isShiftedOrShiftLocked() ? SwitchActions.UNSHIFT : SwitchActions.MANUAL_SHIFT);
} else {
toggleShiftInSymbols(isSymbolShifted);
}
}
// TODO: Get rid of isAlphabetMode arguments.
public void onToggleCapsLock(boolean isAlphabetMode) {
if (isAlphabetMode) {
if (isShiftLocked()) {
mSwitchActions.setShiftLocked(false);
// Shift key is long pressed while caps lock state, we will toggle back to normal
// state. And mark as if shift key is released.
mShiftKeyState.onRelease();
} else {
mSwitchActions.setShiftLocked(true);
}
}
}
// TODO: Get rid of isAlphabetMode arguments.
public void onToggleAlphabetAndSymbols(boolean isAlphabetMode) {
toggleAlphabetAndSymbols(isAlphabetMode);
}
private static String switchStateToString(int switchState) { private static String switchStateToString(int switchState) {
switch (switchState) { switch (switchState) {
case SWITCH_STATE_ALPHA: return "ALPHA"; case SWITCH_STATE_ALPHA: return "ALPHA";

View file

@ -1335,7 +1335,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
case Keyboard.CODE_SWITCH_ALPHA_SYMBOL: case Keyboard.CODE_SWITCH_ALPHA_SYMBOL:
// Symbol key is handled in onPress() when device has distinct multi-touch panel. // Symbol key is handled in onPress() when device has distinct multi-touch panel.
if (!distinctMultiTouch) { if (!distinctMultiTouch) {
switcher.toggleKeyboardMode(); switcher.toggleAlphabetAndSymbols();
} }
break; break;
case Keyboard.CODE_CANCEL: case Keyboard.CODE_CANCEL: