MockKeyboardSwitcher.java revision 373f452584f5a6881d496eec9beb262fccf4a2a4
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 static String getLayoutName(int layoutId) { 60 switch (layoutId) { 61 case Constants.ALPHABET_UNSHIFTED: return "ALPHABET_UNSHIFTED"; 62 case Constants.ALPHABET_MANUAL_SHIFTED: return "ALPHABET_MANUAL_SHIFTED"; 63 case Constants.ALPHABET_AUTOMATIC_SHIFTED: return "ALPHABET_AUTOMATIC_SHIFTED"; 64 case Constants.ALPHABET_SHIFT_LOCKED: return "ALPHABET_SHIFT_LOCKED"; 65 case Constants.SYMBOLS_UNSHIFTED: return "SYMBOLS_UNSHIFTED"; 66 case Constants.SYMBOLS_SHIFTED: return "SYMBOLS_SHIFTED"; 67 default: return "UNKNOWN<" + layoutId + ">"; 68 } 69 } 70 71 public void setAutoCapsMode(boolean autoCaps) { 72 mAutoCapsMode = autoCaps; 73 } 74 75 @Override 76 public void setAlphabetKeyboard() { 77 mLayout = Constants.ALPHABET_UNSHIFTED; 78 } 79 80 @Override 81 public void setShifted(int shiftMode) { 82 if (shiftMode == SwitchActions.UNSHIFT) { 83 mLayout = Constants.ALPHABET_UNSHIFTED; 84 } else if (shiftMode == SwitchActions.MANUAL_SHIFT) { 85 mLayout = Constants.ALPHABET_MANUAL_SHIFTED; 86 } else if (shiftMode == SwitchActions.AUTOMATIC_SHIFT) { 87 mLayout = Constants.ALPHABET_AUTOMATIC_SHIFTED; 88 } 89 } 90 91 @Override 92 public void setShiftLocked(boolean shiftLocked) { 93 if (shiftLocked) { 94 mLayout = Constants.ALPHABET_SHIFT_LOCKED; 95 } else { 96 mLayout = Constants.ALPHABET_UNSHIFTED; 97 } 98 } 99 100 @Override 101 public void setSymbolsKeyboard() { 102 mLayout = Constants.SYMBOLS_UNSHIFTED; 103 } 104 105 @Override 106 public void setSymbolsShiftedKeyboard() { 107 mLayout = Constants.SYMBOLS_SHIFTED; 108 } 109 110 @Override 111 public void requestUpdatingShiftState() { 112 mState.onUpdateShiftState(mAutoCapsMode && mAutoCapsState); 113 } 114 115 public void updateShiftState() { 116 mState.onUpdateShiftState(mAutoCapsMode && mAutoCapsState); 117 } 118 119 public void loadKeyboard(String layoutSwitchBackSymbols) { 120 mState.onLoadKeyboard(layoutSwitchBackSymbols); 121 } 122 123 public void saveKeyboardState() { 124 mState.onSaveKeyboardState(); 125 } 126 127 public void onPressKey(int code) { 128 mState.onPressKey(code); 129 } 130 131 public void onReleaseKey(int code, boolean withSliding) { 132 mState.onReleaseKey(code, withSliding); 133 } 134 135 public void onCodeInput(int code, boolean isSinglePointer) { 136 if (Keyboard.isLetterCode(code)) { 137 mAutoCapsState = (code == Constants.CODE_AUTO_CAPS_TRIGGER); 138 } 139 mState.onCodeInput(code, isSinglePointer, mAutoCapsMode && mAutoCapsState); 140 } 141 142 public void onCancelInput(boolean isSinglePointer) { 143 mState.onCancelInput(isSinglePointer); 144 } 145}