Remove duplicate logic from KeyboardSwitcher and KeyboardState

Change-Id: I1d331ee7f71501baa4ec2df01df39340499834e4
main
Tadashi G. Takaoka 2012-01-16 14:55:34 +09:00
parent e47bd3f4fb
commit 58e782a225
2 changed files with 10 additions and 22 deletions

View File

@ -221,19 +221,16 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
Keyboard keyboard = getKeyboard(); Keyboard keyboard = getKeyboard();
if (keyboard == null) if (keyboard == null)
return; return;
if (shiftMode == AUTOMATIC_SHIFT) { switch (shiftMode) {
case AUTOMATIC_SHIFT:
keyboard.setAutomaticTemporaryUpperCase(); keyboard.setAutomaticTemporaryUpperCase();
} else { break;
final boolean shifted = (shiftMode == MANUAL_SHIFT); case MANUAL_SHIFT:
// TODO: Remove duplicated logic in KeyboardState#setShifted keyboard.setShifted(true);
// On non-distinct multi touch panel device, we should also turn off the shift locked break;
// state when shift key is pressed to go to normal mode. case UNSHIFT:
// On the other hand, on distinct multi touch panel device, turning off the shift keyboard.setShifted(false);
// locked state with shift key pressing is handled by onReleaseShift(). break;
if (!hasDistinctMultitouch() && !shifted && mState.isShiftLocked()) {
setShiftLocked(false);
}
keyboard.setShifted(shifted);
} }
mKeyboardView.invalidateAllKeys(); mKeyboardView.invalidateAllKeys();
} }

View File

@ -166,29 +166,20 @@ public class KeyboardState {
if (DEBUG_STATE) { if (DEBUG_STATE) {
Log.d(TAG, "setShifted: shiftMode=" + shiftModeToString(shiftMode)); Log.d(TAG, "setShifted: shiftMode=" + shiftModeToString(shiftMode));
} }
// TODO: Remove this hack in conjunction with duplicated logic below.
boolean needsToTurnOffShiftLockedLater = false;
if (shiftMode == SwitchActions.AUTOMATIC_SHIFT) { if (shiftMode == SwitchActions.AUTOMATIC_SHIFT) {
mKeyboardShiftState.setAutomaticTemporaryUpperCase(); mKeyboardShiftState.setAutomaticTemporaryUpperCase();
} else { } else {
// TODO: Remove duplicated logic in KeyboardSwitcher#setShifted()
final boolean shifted = (shiftMode == SwitchActions.MANUAL_SHIFT); final boolean shifted = (shiftMode == SwitchActions.MANUAL_SHIFT);
// On non-distinct multi touch panel device, we should also turn off the shift locked // On non-distinct multi touch panel device, we should also turn off the shift locked
// state when shift key is pressed to go to normal mode. // state when shift key is pressed to go to normal mode.
// On the other hand, on distinct multi touch panel device, turning off the shift // On the other hand, on distinct multi touch panel device, turning off the shift
// locked state with shift key pressing is handled by onReleaseShift(). // locked state with shift key pressing is handled by onReleaseShift().
if (!mHasDistinctMultitouch && !shifted && mKeyboardShiftState.isShiftLocked()) { if (!mHasDistinctMultitouch && !shifted && mKeyboardShiftState.isShiftLocked()) {
// Setting shift lock state should be delayed after mSwitchActions.setShiftLocked(false);
// mSwitchActions.setShifted(shiftMode) is called, because in that call the state
// is referenced.
needsToTurnOffShiftLockedLater = true;
} }
mKeyboardShiftState.setShifted(shifted); mKeyboardShiftState.setShifted(shifted);
} }
mSwitchActions.setShifted(shiftMode); mSwitchActions.setShifted(shiftMode);
if (needsToTurnOffShiftLockedLater) {
mKeyboardShiftState.setShiftLocked(false);
}
} }
private void setShiftLocked(boolean shiftLocked) { private void setShiftLocked(boolean shiftLocked) {