MockKeyboardSwitcher.java revision 60c4594ee6415b266b3418e46d09e6a5b3ed23e1
1/* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5 * use this file except in compliance with the License. You may obtain a copy of 6 * the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations under 14 * the License. 15 */ 16 17package com.android.inputmethod.keyboard.internal; 18 19import com.android.inputmethod.keyboard.Keyboard; 20import com.android.inputmethod.keyboard.internal.KeyboardState.SwitchActions; 21 22public class MockKeyboardSwitcher implements KeyboardState.SwitchActions { 23 public interface Constants { 24 // Argument for {@link KeyboardState#onPressKey} and {@link KeyboardState#onReleaseKey}. 25 public static final boolean NOT_SLIDING = false; 26 public static final boolean SLIDING = true; 27 // Argument for {@link KeyboardState#onCodeInput}. 28 public static final boolean SINGLE = true; 29 public static final boolean MULTI = false; 30 public static final boolean NO_AUTO_CAPS = false; 31 public static final boolean AUTO_CAPS = true; 32 33 public static final int CODE_SHIFT = Keyboard.CODE_SHIFT; 34 public static final int CODE_SYMBOL = Keyboard.CODE_SWITCH_ALPHA_SYMBOL; 35 public static final int CODE_CAPSLOCK = Keyboard.CODE_CAPSLOCK; 36 public static final int CODE_SPACE = Keyboard.CODE_SPACE; 37 public static final int CODE_AUTO_CAPS_TRIGGER = Keyboard.CODE_SPACE; 38 39 public static final int ALPHABET_UNSHIFTED = 0; 40 public static final int ALPHABET_MANUAL_SHIFTED = 1; 41 public static final int ALPHABET_AUTOMATIC_SHIFTED = 2; 42 public static final int ALPHABET_SHIFT_LOCKED = 3; 43 public static final int SYMBOLS_UNSHIFTED = 4; 44 public static final int SYMBOLS_SHIFTED = 5; 45 } 46 47 private int mLayout = Constants.ALPHABET_UNSHIFTED; 48 49 private boolean mAutoCapsMode = Constants.NO_AUTO_CAPS; 50 // Following InputConnection's behavior. Simulating InputType.TYPE_TEXT_FLAG_CAP_WORDS. 51 private boolean mAutoCapsState = true; 52 53 private final KeyboardState mState = new KeyboardState(this); 54 55 public int getLayoutId() { 56 return mLayout; 57 } 58 59 public void setAutoCapsMode(boolean autoCaps) { 60 mAutoCapsMode = autoCaps; 61 } 62 63 @Override 64 public void setAlphabetKeyboard() { 65 mLayout = Constants.ALPHABET_UNSHIFTED; 66 } 67 68 @Override 69 public void setShifted(int shiftMode) { 70 if (shiftMode == SwitchActions.UNSHIFT) { 71 mLayout = Constants.ALPHABET_UNSHIFTED; 72 } else if (shiftMode == SwitchActions.MANUAL_SHIFT) { 73 mLayout = Constants.ALPHABET_MANUAL_SHIFTED; 74 } else if (shiftMode == SwitchActions.AUTOMATIC_SHIFT) { 75 mLayout = Constants.ALPHABET_AUTOMATIC_SHIFTED; 76 } 77 } 78 79 @Override 80 public void setShiftLocked(boolean shiftLocked) { 81 if (shiftLocked) { 82 mLayout = Constants.ALPHABET_SHIFT_LOCKED; 83 } else { 84 mLayout = Constants.ALPHABET_UNSHIFTED; 85 } 86 } 87 88 @Override 89 public void setSymbolsKeyboard() { 90 mLayout = Constants.SYMBOLS_UNSHIFTED; 91 } 92 93 @Override 94 public void setSymbolsShiftedKeyboard() { 95 mLayout = Constants.SYMBOLS_SHIFTED; 96 } 97 98 @Override 99 public void requestUpdatingShiftState() { 100 mState.onUpdateShiftState(mAutoCapsMode && mAutoCapsState); 101 } 102 103 public void updateShiftState() { 104 mState.onUpdateShiftState(mAutoCapsMode && mAutoCapsState); 105 } 106 107 public void loadKeyboard(String layoutSwitchBackSymbols) { 108 mState.onLoadKeyboard(layoutSwitchBackSymbols); 109 } 110 111 public void onPressKey(int code) { 112 mState.onPressKey(code); 113 } 114 115 public void onReleaseKey(int code, boolean withSliding) { 116 mState.onReleaseKey(code, withSliding); 117 } 118 119 public void onCodeInput(int code, boolean isSinglePointer) { 120 if (Keyboard.isLetterCode(code)) { 121 mAutoCapsState = (code == Constants.CODE_AUTO_CAPS_TRIGGER); 122 } 123 mState.onCodeInput(code, isSinglePointer, mAutoCapsMode && mAutoCapsState); 124 } 125 126 public void onCancelInput(boolean isSinglePointer) { 127 mState.onCancelInput(isSinglePointer); 128 } 129}