Cleanup settings key related stuff

Change-Id: Ie0d1204e94fcdf9d578974256bf2ae3e87797f13
This commit is contained in:
Tadashi G. Takaoka 2011-12-13 22:00:12 +09:00
parent e35e13fc7d
commit 8b1b8aae9c
4 changed files with 41 additions and 49 deletions

View File

@ -51,11 +51,10 @@ public class KeyboardId {
public static final int ELEMENT_PHONE_SHIFT = 8;
public static final int ELEMENT_NUMBER = 9;
// TODO: These constants could be private.
public static final int F2KEY_MODE_NONE = 0;
public static final int F2KEY_MODE_SETTINGS = 1;
public static final int F2KEY_MODE_SHORTCUT_IME = 2;
public static final int F2KEY_MODE_SHORTCUT_IME_OR_SETTINGS = 3;
private static final int F2KEY_MODE_NONE = 0;
private static final int F2KEY_MODE_SETTINGS = 1;
private static final int F2KEY_MODE_SHORTCUT_IME = 2;
private static final int F2KEY_MODE_SHORTCUT_IME_OR_SETTINGS = 3;
public final Locale mLocale;
public final int mOrientation;
@ -66,9 +65,7 @@ public class KeyboardId {
public final int mElementState;
public final boolean mNavigateAction;
public final boolean mPasswordInput;
// TODO: Clean up these booleans and modes.
public final boolean mHasSettingsKey;
public final int mF2KeyMode;
private final boolean mSettingsKeyEnabled;
public final boolean mClobberSettingsKey;
public final boolean mShortcutKeyEnabled;
public final boolean mHasShortcutKey;
@ -79,9 +76,8 @@ public class KeyboardId {
private final int mHashCode;
// TODO: The hasSettings, f2KeyMode, and clobberSettingsKey arguments could be reduced.
public KeyboardId(int xmlId, int elementState, Locale locale, int orientation, int width,
int mode, EditorInfo editorInfo, boolean hasSettingsKey, int f2KeyMode,
int mode, EditorInfo editorInfo, boolean settingsKeyEnabled,
boolean clobberSettingsKey, boolean shortcutKeyEnabled, boolean hasShortcutKey) {
final int inputType = (editorInfo != null) ? editorInfo.inputType : 0;
final int imeOptions = (editorInfo != null) ? editorInfo.imeOptions : 0;
@ -97,8 +93,7 @@ public class KeyboardId {
// || EditorInfoCompatUtils.hasFlagNavigatePrevious(imeOptions);
this.mPasswordInput = InputTypeCompatUtils.isPasswordInputType(inputType)
|| InputTypeCompatUtils.isVisiblePasswordInputType(inputType);
this.mHasSettingsKey = hasSettingsKey;
this.mF2KeyMode = f2KeyMode;
this.mSettingsKeyEnabled = settingsKeyEnabled;
this.mClobberSettingsKey = clobberSettingsKey;
this.mShortcutKeyEnabled = shortcutKeyEnabled;
this.mHasShortcutKey = hasShortcutKey;
@ -118,9 +113,8 @@ public class KeyboardId {
elementState,
mNavigateAction,
mPasswordInput,
hasSettingsKey,
f2KeyMode,
clobberSettingsKey,
mSettingsKeyEnabled,
mClobberSettingsKey,
shortcutKeyEnabled,
hasShortcutKey,
mImeAction,
@ -128,9 +122,8 @@ public class KeyboardId {
}
public KeyboardId cloneWithNewXml(int xmlId) {
return new KeyboardId(xmlId, mElementState, mLocale,
mOrientation, mWidth, mMode, mEditorInfo, false, F2KEY_MODE_NONE, false, false,
false);
return new KeyboardId(xmlId, mElementState, mLocale, mOrientation, mWidth, mMode,
mEditorInfo, false, false, false, false);
}
// Remove this method.
@ -154,6 +147,25 @@ public class KeyboardId {
return mElementState == ELEMENT_PHONE_SHIFT;
}
public boolean hasSettingsKey() {
return mSettingsKeyEnabled && !mClobberSettingsKey;
}
public int f2KeyMode() {
if (mClobberSettingsKey) {
// Never shows the Settings key
return KeyboardId.F2KEY_MODE_SHORTCUT_IME;
}
if (mSettingsKeyEnabled) {
return KeyboardId.F2KEY_MODE_SETTINGS;
} else {
// It should be alright to fall back to the Settings key on 7-inch layouts
// even when the Settings key is not explicitly enabled.
return KeyboardId.F2KEY_MODE_SHORTCUT_IME_OR_SETTINGS;
}
}
@Override
public boolean equals(Object other) {
return other instanceof KeyboardId && equals((KeyboardId) other);
@ -168,8 +180,7 @@ public class KeyboardId {
&& other.mElementState == this.mElementState
&& other.mNavigateAction == this.mNavigateAction
&& other.mPasswordInput == this.mPasswordInput
&& other.mHasSettingsKey == this.mHasSettingsKey
&& other.mF2KeyMode == this.mF2KeyMode
&& other.mSettingsKeyEnabled == this.mSettingsKeyEnabled
&& other.mClobberSettingsKey == this.mClobberSettingsKey
&& other.mShortcutKeyEnabled == this.mShortcutKeyEnabled
&& other.mHasShortcutKey == this.mHasShortcutKey
@ -189,11 +200,11 @@ public class KeyboardId {
(mOrientation == 1 ? "port" : "land"), mWidth,
modeName(mMode),
EditorInfoCompatUtils.imeOptionsName(mImeAction),
f2KeyModeName(mF2KeyMode),
f2KeyModeName(f2KeyMode()),
(mClobberSettingsKey ? " clobberSettingsKey" : ""),
(mNavigateAction ? " navigateAction" : ""),
(mPasswordInput ? " passwordInput" : ""),
(mHasSettingsKey ? " hasSettingsKey" : ""),
(hasSettingsKey() ? " hasSettingsKey" : ""),
(mShortcutKeyEnabled ? " shortcutKeyEnabled" : ""),
(mHasShortcutKey ? " hasShortcutKey" : "")
);

View File

@ -72,11 +72,10 @@ public class KeyboardSet {
new HashMap<Integer, Integer>();
private final int mMode;
private final boolean mSettingsKeyEnabled;
private final boolean mVoiceKeyEnabled;
private final boolean mNoSettingsKey;
private final boolean mHasSettingsKey;
private final int mF2KeyMode;
private final boolean mVoiceKeyOnMain;
private final boolean mNoSettingsKey;
private final Locale mLocale;
private final Configuration mConf;
private final DisplayMetrics mMetrics;
@ -88,7 +87,7 @@ public class KeyboardSet {
final String packageName = context.getPackageName();
mMode = Utils.getKeyboardMode(mEditorInfo);
final boolean settingsKeyEnabled = settingsValues.isSettingsKeyEnabled();
mSettingsKeyEnabled = settingsValues.isSettingsKeyEnabled();
@SuppressWarnings("deprecation")
final boolean noMicrophone = Utils.inPrivateImeOptions(
packageName, LatinIME.IME_OPTION_NO_MICROPHONE, editorInfo)
@ -98,8 +97,6 @@ public class KeyboardSet {
mVoiceKeyOnMain = settingsValues.isVoiceKeyOnMain();
mNoSettingsKey = Utils.inPrivateImeOptions(
packageName, LatinIME.IME_OPTION_NO_SETTINGS_KEY, editorInfo);
mHasSettingsKey = settingsKeyEnabled && !mNoSettingsKey;
mF2KeyMode = getF2KeyMode(settingsKeyEnabled, mNoSettingsKey);
final boolean forceAscii = Utils.inPrivateImeOptions(
packageName, LatinIME.IME_OPTION_FORCE_ASCII, editorInfo);
final boolean asciiCapable = subtypeSwitcher.currentSubtypeContainsExtraValueKey(
@ -126,8 +123,8 @@ public class KeyboardSet {
final int xmlId = mElementKeyboards.get(elementState);
final boolean hasShortcutKey = mVoiceKeyEnabled && (isSymbols != mVoiceKeyOnMain);
return new KeyboardId(xmlId, elementState, mLocale, mConf.orientation,
mMetrics.widthPixels, mMode, mEditorInfo, mHasSettingsKey, mF2KeyMode,
mNoSettingsKey, mVoiceKeyEnabled, hasShortcutKey);
mMetrics.widthPixels, mMode, mEditorInfo, mSettingsKeyEnabled, mNoSettingsKey,
mVoiceKeyEnabled, hasShortcutKey);
}
private static int getElementState(int mode, boolean isSymbols, boolean isShift) {
@ -145,22 +142,6 @@ public class KeyboardSet {
}
}
// TODO: Move to KeyboardId.
private static int getF2KeyMode(boolean settingsKeyEnabled, boolean noSettingsKey) {
if (noSettingsKey) {
// Never shows the Settings key
return KeyboardId.F2KEY_MODE_SHORTCUT_IME;
}
if (settingsKeyEnabled) {
return KeyboardId.F2KEY_MODE_SETTINGS;
} else {
// It should be alright to fall back to the Settings key on 7-inch layouts
// even when the Settings key is not explicitly enabled.
return KeyboardId.F2KEY_MODE_SHORTCUT_IME_OR_SETTINGS;
}
}
private void parseKeyboardSet(Resources res, int resId) throws XmlPullParserException,
IOException {
final XmlResourceParser parser = res.getXml(resId);

View File

@ -613,9 +613,9 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
final boolean passwordInputMatched = matchBoolean(a,
R.styleable.Keyboard_Case_passwordInput, id.mPasswordInput);
final boolean hasSettingsKeyMatched = matchBoolean(a,
R.styleable.Keyboard_Case_hasSettingsKey, id.mHasSettingsKey);
R.styleable.Keyboard_Case_hasSettingsKey, id.hasSettingsKey());
final boolean f2KeyModeMatched = matchInteger(a,
R.styleable.Keyboard_Case_f2KeyMode, id.mF2KeyMode);
R.styleable.Keyboard_Case_f2KeyMode, id.f2KeyMode());
final boolean clobberSettingsKeyMatched = matchBoolean(a,
R.styleable.Keyboard_Case_clobberSettingsKey, id.mClobberSettingsKey);
final boolean shortcutKeyEnabledMatched = matchBoolean(a,

View File

@ -52,7 +52,7 @@ public class SuggestTestsBase extends AndroidTestCase {
}
return new KeyboardId(com.android.inputmethod.latin.R.xml.kbd_qwerty,
KeyboardId.ELEMENT_ALPHABET, locale, orientation, width, KeyboardId.MODE_TEXT,
new EditorInfo(), false, KeyboardId.F2KEY_MODE_NONE, false, false, false);
new EditorInfo(), false, false, false, false);
}
protected InputStream openTestRawResource(int resIdInTest) {