diff options
| author | Tadashi G. Takaoka <takaoka@google.com> | 2011-12-08 14:42:12 +0900 |
|---|---|---|
| committer | Tadashi G. Takaoka <takaoka@google.com> | 2011-12-08 17:00:56 +0900 |
| commit | cf58f53a1ab53b427a3d9784502b47ba1833b018 (patch) | |
| tree | 1bcc0e79124ed048a86fc461e20af3f36b9a5283 /java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java | |
| parent | cce3f791af2cec8f9ab531c97ccabcc19c7b7cd0 (diff) | |
Move KeyboardLayoutState into KeyboardState
Bug: 5708602
Change-Id: Ieb6b872d0f2cf3ad1fcb69409e2cf49f60427672
Diffstat (limited to 'java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java')
| -rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java index a632a27b1..ee5ef9164 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java @@ -17,11 +17,15 @@ package com.android.inputmethod.keyboard.internal; import android.text.TextUtils; +import android.util.Log; import com.android.inputmethod.keyboard.Keyboard; // TODO: Add unit tests public class KeyboardState { + private static final String TAG = KeyboardState.class.getSimpleName(); + private static final boolean DEBUG_STATE = false; + public interface SwitchActions { public void setAlphabetKeyboard(); public static final int UNSHIFT = 0; @@ -52,6 +56,15 @@ public class KeyboardState { private final SwitchActions mSwitchActions; + private final SavedKeyboardState mSavedKeyboardState = new SavedKeyboardState(); + + private static class SavedKeyboardState { + public boolean mIsValid; + public boolean mIsAlphabetMode; + public boolean mIsShiftLocked; + public boolean mIsShifted; + } + public KeyboardState(SwitchActions switchActions) { mSwitchActions = switchActions; } @@ -64,6 +77,52 @@ public class KeyboardState { mSymbolKeyState.onRelease(); } + // TODO: Get rid of isAlphabetMode and isSymbolShifted arguments. + public void onSaveKeyboardState(boolean isAlphabetMode, boolean isSymbolShifted) { + final SavedKeyboardState state = mSavedKeyboardState; + state.mIsAlphabetMode = isAlphabetMode; + if (isAlphabetMode) { + state.mIsShiftLocked = isShiftLocked(); + state.mIsShifted = !state.mIsShiftLocked && isShiftedOrShiftLocked(); + } else { + state.mIsShiftLocked = false; + state.mIsShifted = isSymbolShifted; + } + state.mIsValid = true; + if (DEBUG_STATE) { + Log.d(TAG, "save: alphabet=" + state.mIsAlphabetMode + + " shiftLocked=" + state.mIsShiftLocked + " shift=" + state.mIsShifted); + } + } + + public void onRestoreKeyboardState() { + final SavedKeyboardState state = mSavedKeyboardState; + if (DEBUG_STATE) { + Log.d(TAG, "restore: valid=" + state.mIsValid + " alphabet=" + state.mIsAlphabetMode + + " shiftLocked=" + state.mIsShiftLocked + " shift=" + state.mIsShifted); + } + if (!state.mIsValid || state.mIsAlphabetMode) { + mSwitchActions.setAlphabetKeyboard(); + } else { + if (state.mIsShifted) { + mSwitchActions.setSymbolsShiftedKeyboard(); + } else { + mSwitchActions.setSymbolsKeyboard(); + } + } + + if (!state.mIsValid) return; + state.mIsValid = false; + + if (state.mIsAlphabetMode) { + mSwitchActions.setShiftLocked(state.mIsShiftLocked); + if (!state.mIsShiftLocked) { + mSwitchActions.setShifted( + state.mIsShifted ? SwitchActions.MANUAL_SHIFT : SwitchActions.UNSHIFT); + } + } + } + // TODO: Get rid of this method public void onSetKeyboard(boolean isAlphabetMode) { mSwitchState = isAlphabetMode ? SWITCH_STATE_ALPHA : SWITCH_STATE_SYMBOL_BEGIN; |
