Cleanup KeyboardSwitcher a bit
* Move caps lock state preserving code to KeyboardState. * Merge KeyboardState.onLoadKeyboard and onRestoreKeyboardState. * Merge private methods into toggleShift and toggleKeyboardMode. Bug: 5708602 Change-Id: I793a934a0ba18d5750be011c52ebe20c1976eac6
This commit is contained in:
parent
cf58f53a1a
commit
6ad9b012d9
2 changed files with 35 additions and 33 deletions
|
@ -69,9 +69,6 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
|||
private Resources mResources;
|
||||
|
||||
private KeyboardState mState;
|
||||
private static final int UNSHIFT = 0;
|
||||
private static final int MANUAL_SHIFT = 1;
|
||||
private static final int AUTOMATIC_SHIFT = 2;
|
||||
|
||||
private KeyboardId mMainKeyboardId;
|
||||
private KeyboardId mSymbolsKeyboardId;
|
||||
|
@ -141,8 +138,6 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
|||
mSymbolsKeyboardId = getKeyboardId(editorInfo, true, false, settingsValues);
|
||||
mSymbolsShiftedKeyboardId = getKeyboardId(editorInfo, true, true, settingsValues);
|
||||
mState.onLoadKeyboard(mResources.getString(R.string.layout_switch_back_symbols));
|
||||
mPrevMainKeyboardWasShiftLocked = false;
|
||||
mState.onRestoreKeyboardState();
|
||||
} catch (RuntimeException e) {
|
||||
Log.w(TAG, "loading keyboard failed: " + mMainKeyboardId, e);
|
||||
LatinImeLogger.logOnException(mMainKeyboardId.toString(), e);
|
||||
|
@ -283,6 +278,7 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
|||
return mCurrentId != null ? mCurrentId.mMode : KeyboardId.MODE_TEXT;
|
||||
}
|
||||
|
||||
// TODO: Delegate to KeyboardState
|
||||
public boolean isAlphabetMode() {
|
||||
return mCurrentId != null && mCurrentId.isAlphabetKeyboard();
|
||||
}
|
||||
|
@ -368,10 +364,17 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
|||
if (isAlphabetMode()) {
|
||||
setShifted(mState.isShiftedOrShiftLocked() ? UNSHIFT : MANUAL_SHIFT);
|
||||
} else {
|
||||
toggleShiftInSymbols();
|
||||
if (isSymbolShifted()) {
|
||||
setSymbolsKeyboard();
|
||||
} else {
|
||||
setSymbolsShiftedKeyboard();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle caps lock state triggered by user touch event.
|
||||
*/
|
||||
public void toggleCapsLock() {
|
||||
if (DEBUG_STATE) {
|
||||
Log.d(TAG, "toggleCapsLock: " + mState);
|
||||
|
@ -389,11 +392,18 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle keyboard mode triggered by user touch event.
|
||||
*/
|
||||
public void toggleKeyboardMode() {
|
||||
if (DEBUG_STATE) {
|
||||
Log.d(TAG, "toggleKeyboard: " + mState);
|
||||
Log.d(TAG, "toggleKeyboardMode: " + mState);
|
||||
}
|
||||
if (isAlphabetMode()) {
|
||||
setSymbolsKeyboard();
|
||||
} else {
|
||||
setAlphabetKeyboard();
|
||||
}
|
||||
toggleAlphabetAndSymbols();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -450,13 +460,10 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
|||
mState.onCancelInput(isAlphabetMode(), isSymbolShifted(), isSinglePointer());
|
||||
}
|
||||
|
||||
// TODO: Move this variable to KeyboardState.
|
||||
private boolean mPrevMainKeyboardWasShiftLocked;
|
||||
|
||||
// Implements {@link KeyboardState.SwitchActions}.
|
||||
@Override
|
||||
public void setSymbolsKeyboard() {
|
||||
mPrevMainKeyboardWasShiftLocked = mState.isShiftLocked();
|
||||
mState.onSaveShiftLockState();
|
||||
setKeyboard(getKeyboard(mSymbolsKeyboardId));
|
||||
}
|
||||
|
||||
|
@ -464,19 +471,10 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
|||
@Override
|
||||
public void setAlphabetKeyboard() {
|
||||
setKeyboard(getKeyboard(mMainKeyboardId));
|
||||
setShiftLocked(mPrevMainKeyboardWasShiftLocked);
|
||||
mPrevMainKeyboardWasShiftLocked = false;
|
||||
}
|
||||
|
||||
// TODO: Remove this method and merge into toggleKeyboardMode().
|
||||
private void toggleAlphabetAndSymbols() {
|
||||
if (isAlphabetMode()) {
|
||||
setSymbolsKeyboard();
|
||||
} else {
|
||||
setAlphabetKeyboard();
|
||||
}
|
||||
mState.onRestoreShiftLockState();
|
||||
}
|
||||
|
||||
// TODO: Remove this method
|
||||
private boolean isSymbolShifted() {
|
||||
return mCurrentId != null && mCurrentId.equals(mSymbolsShiftedKeyboardId);
|
||||
}
|
||||
|
@ -487,15 +485,6 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
|
|||
setKeyboard(getKeyboard(mSymbolsShiftedKeyboardId));
|
||||
}
|
||||
|
||||
// TODO: Remove this method and merge into toggleShift().
|
||||
private void toggleShiftInSymbols() {
|
||||
if (isSymbolShifted()) {
|
||||
setSymbolsKeyboard();
|
||||
} else {
|
||||
setSymbolsShiftedKeyboard();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isInMomentarySwitchState() {
|
||||
return mState.isInMomentarySwitchState();
|
||||
}
|
||||
|
|
|
@ -57,6 +57,7 @@ public class KeyboardState {
|
|||
private final SwitchActions mSwitchActions;
|
||||
|
||||
private final SavedKeyboardState mSavedKeyboardState = new SavedKeyboardState();
|
||||
private boolean mPrevMainKeyboardWasShiftLocked;
|
||||
|
||||
private static class SavedKeyboardState {
|
||||
public boolean mIsValid;
|
||||
|
@ -75,6 +76,8 @@ public class KeyboardState {
|
|||
mKeyboardShiftState.setShiftLocked(false);
|
||||
mShiftKeyState.onRelease();
|
||||
mSymbolKeyState.onRelease();
|
||||
mPrevMainKeyboardWasShiftLocked = false;
|
||||
onRestoreKeyboardState();
|
||||
}
|
||||
|
||||
// TODO: Get rid of isAlphabetMode and isSymbolShifted arguments.
|
||||
|
@ -95,7 +98,7 @@ public class KeyboardState {
|
|||
}
|
||||
}
|
||||
|
||||
public void onRestoreKeyboardState() {
|
||||
private void onRestoreKeyboardState() {
|
||||
final SavedKeyboardState state = mSavedKeyboardState;
|
||||
if (DEBUG_STATE) {
|
||||
Log.d(TAG, "restore: valid=" + state.mIsValid + " alphabet=" + state.mIsAlphabetMode
|
||||
|
@ -183,6 +186,16 @@ public class KeyboardState {
|
|||
}
|
||||
}
|
||||
|
||||
public void onRestoreShiftLockState() {
|
||||
mSwitchActions.setShiftLocked(mPrevMainKeyboardWasShiftLocked);
|
||||
mPrevMainKeyboardWasShiftLocked = false;
|
||||
}
|
||||
|
||||
public void onSaveShiftLockState() {
|
||||
mPrevMainKeyboardWasShiftLocked = isShiftLocked();
|
||||
}
|
||||
|
||||
// TODO: Remove this method.
|
||||
public void onReleaseCapsLock() {
|
||||
mShiftKeyState.onRelease();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue