Fix "Show settings key" option on 7" device (DO NOT MERGE)
Bug: 4590231 Change-Id: I993ac77278e129294f2bed73f97c2c4624220fdb
This commit is contained in:
parent
37deb112c7
commit
9dcb764f05
14 changed files with 242 additions and 98 deletions
|
@ -178,9 +178,17 @@
|
|||
</attr>
|
||||
<attr name="webInput" format="boolean" />
|
||||
<attr name="passwordInput" format="boolean" />
|
||||
<attr name="hasSettingsKey" format="string" />
|
||||
<attr name="voiceKeyEnabled" format="string" />
|
||||
<attr name="hasVoiceKey" format="string" />
|
||||
<attr name="hasSettingsKey" format="boolean" />
|
||||
<!-- This should be aligned with KeyboardID.F2KEY_MODE_* -->
|
||||
<attr name="f2KeyMode" format="enum">
|
||||
<enum name="none" value="0" />
|
||||
<enum name="settings" value="1" />
|
||||
<enum name="shortcutIme" value="2" />
|
||||
<enum name="shortcutImeOrSettings" value="3" />
|
||||
</attr>
|
||||
<attr name="clobberSettingsKey" format="boolean" />
|
||||
<attr name="voiceKeyEnabled" format="boolean" />
|
||||
<attr name="hasVoiceKey" format="boolean" />
|
||||
<attr name="imeAction">
|
||||
<!-- This should be aligned with EditorInfo.IME_ACTION_* -->
|
||||
<flag name="actionUnspecified" value="0" />
|
||||
|
|
|
@ -37,6 +37,23 @@
|
|||
latin:styleName="functionalKeyStyle" />
|
||||
</case>
|
||||
</switch>
|
||||
<!-- Base key style for the key which may have settings key as popup key -->
|
||||
<switch>
|
||||
<case
|
||||
latin:clobberSettingsKey="true"
|
||||
>
|
||||
<key-style
|
||||
latin:styleName="settingsPopupStyle"
|
||||
latin:parentStyle="functionalKeyStyle" />
|
||||
</case>
|
||||
<default>
|
||||
<key-style
|
||||
latin:styleName="settingsPopupStyle"
|
||||
latin:keyHintIcon="@drawable/hint_popup_holo"
|
||||
latin:popupCharacters="\@drawable/sym_keyboard_settings_holo|\@integer/key_settings"
|
||||
latin:parentStyle="functionalKeyStyle" />
|
||||
</default>
|
||||
</switch>
|
||||
<!-- Functional key styles -->
|
||||
<switch>
|
||||
<case
|
||||
|
@ -78,28 +95,18 @@
|
|||
latin:keyHintIcon="@drawable/hint_popup_holo"
|
||||
latin:popupCharacters="@string/alternates_for_smiley"
|
||||
latin:maxPopupKeyboardColumn="5" />
|
||||
<switch>
|
||||
<case
|
||||
latin:voiceKeyEnabled="true"
|
||||
>
|
||||
<key-style
|
||||
latin:styleName="micOrSettingsKeyStyle"
|
||||
latin:code="@integer/key_voice"
|
||||
latin:keyIcon="@drawable/sym_keyboard_voice_holo"
|
||||
latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
latin:keyHintIcon="@drawable/hint_popup_holo"
|
||||
latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
|
||||
latin:parentStyle="functionalKeyStyle" />
|
||||
</case>
|
||||
<default>
|
||||
<key-style
|
||||
latin:styleName="micOrSettingsKeyStyle"
|
||||
latin:code="@integer/key_settings"
|
||||
latin:keyIcon="@drawable/sym_keyboard_settings_holo"
|
||||
latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
|
||||
latin:parentStyle="functionalKeyStyle" />
|
||||
</default>
|
||||
</switch>
|
||||
<key-style
|
||||
latin:styleName="micKeyStyle"
|
||||
latin:code="@integer/key_voice"
|
||||
latin:keyIcon="@drawable/sym_keyboard_voice_holo"
|
||||
latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
latin:parentStyle="settingsPopupStyle" />
|
||||
<key-style
|
||||
latin:styleName="settingsKeyStyle"
|
||||
latin:code="@integer/key_settings"
|
||||
latin:keyIcon="@drawable/sym_keyboard_settings_holo"
|
||||
latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
|
||||
latin:parentStyle="functionalKeyStyle" />
|
||||
</case>
|
||||
<case
|
||||
latin:colorScheme="black"
|
||||
|
@ -140,28 +147,18 @@
|
|||
latin:keyHintIcon="@drawable/hint_popup_holo"
|
||||
latin:popupCharacters="@string/alternates_for_smiley"
|
||||
latin:maxPopupKeyboardColumn="5" />
|
||||
<switch>
|
||||
<case
|
||||
latin:voiceKeyEnabled="true"
|
||||
>
|
||||
<key-style
|
||||
latin:styleName="micOrSettingsKeyStyle"
|
||||
latin:code="@integer/key_voice"
|
||||
latin:keyIcon="@drawable/sym_bkeyboard_mic"
|
||||
latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
latin:keyHintIcon="@drawable/hint_popup_holo"
|
||||
latin:popupCharacters="\@drawable/sym_keyboard_settings|\@integer/key_settings"
|
||||
latin:parentStyle="functionalKeyStyle" />
|
||||
</case>
|
||||
<default>
|
||||
<key-style
|
||||
latin:styleName="micOrSettingsKeyStyle"
|
||||
latin:code="@integer/key_settings"
|
||||
latin:keyIcon="@drawable/sym_bkeyboard_settings"
|
||||
latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
|
||||
latin:parentStyle="functionalKeyStyle" />
|
||||
</default>
|
||||
</switch>
|
||||
<key-style
|
||||
latin:styleName="micKeyStyle"
|
||||
latin:code="@integer/key_voice"
|
||||
latin:keyIcon="@drawable/sym_bkeyboard_mic"
|
||||
latin:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
latin:parentStyle="settingsPopupStyle" />
|
||||
<key-style
|
||||
latin:styleName="settingsKeyStyle"
|
||||
latin:code="@integer/key_settings"
|
||||
latin:keyIcon="@drawable/sym_bkeyboard_settings"
|
||||
latin:iconPreview="@drawable/sym_keyboard_feedback_settings"
|
||||
latin:parentStyle="functionalKeyStyle" />
|
||||
</case>
|
||||
</switch>
|
||||
<key-style
|
||||
|
|
|
@ -85,12 +85,11 @@
|
|||
latin:keyXPos="24.875%p" />
|
||||
<Key
|
||||
latin:keyStyle="num0KeyStyle" />
|
||||
<Spacer />
|
||||
<Key
|
||||
latin:keyStyle="micOrSettingsKeyStyle"
|
||||
<Spacer
|
||||
latin:keyXPos="-11.00%p"
|
||||
latin:keyWidth="0%p"
|
||||
latin:keyEdgeFlags="right" />
|
||||
latin:keyWidth="0dp" />
|
||||
<include
|
||||
latin:keyboardLayout="@xml/kbd_qwerty_f2" />
|
||||
</Row>
|
||||
</case>
|
||||
<!-- latin:passwordInput="false" -->
|
||||
|
@ -182,11 +181,11 @@
|
|||
latin:keyLabel="0" />
|
||||
<Key
|
||||
latin:keyLabel="#" />
|
||||
<Key
|
||||
latin:keyStyle="micOrSettingsKeyStyle"
|
||||
<Spacer
|
||||
latin:keyXPos="-11.00%p"
|
||||
latin:keyWidth="-11.00%p"
|
||||
latin:keyEdgeFlags="right" />
|
||||
latin:keyWidth="0dp" />
|
||||
<include
|
||||
latin:keyboardLayout="@xml/kbd_qwerty_f2" />
|
||||
</Row>
|
||||
</default>
|
||||
</switch>
|
||||
|
|
|
@ -121,10 +121,10 @@
|
|||
latin:keyStyle="num0KeyStyle" />
|
||||
<Key
|
||||
latin:keyStyle="numPoundKeyStyle" />
|
||||
<Key
|
||||
latin:keyStyle="micOrSettingsKeyStyle"
|
||||
<Spacer
|
||||
latin:keyXPos="-11.00%p"
|
||||
latin:keyWidth="-11.00%p"
|
||||
latin:keyEdgeFlags="right" />
|
||||
latin:keyWidth="0dp" />
|
||||
<include
|
||||
latin:keyboardLayout="@xml/kbd_qwerty_f2" />
|
||||
</Row>
|
||||
</Keyboard>
|
||||
|
|
|
@ -131,10 +131,10 @@
|
|||
latin:keyStyle="num0KeyStyle" />
|
||||
<Key
|
||||
latin:keyStyle="numPoundKeyStyle" />
|
||||
<Key
|
||||
latin:keyStyle="micOrSettingsKeyStyle"
|
||||
<Spacer
|
||||
latin:keyXPos="-11.00%p"
|
||||
latin:keyWidth="-11.00%p"
|
||||
latin:keyEdgeFlags="right" />
|
||||
latin:keyWidth="0dp" />
|
||||
<include
|
||||
latin:keyboardLayout="@xml/kbd_qwerty_f2" />
|
||||
</Row>
|
||||
</Keyboard>
|
||||
|
|
77
java/res/xml-sw600dp/kbd_qwerty_f2.xml
Normal file
77
java/res/xml-sw600dp/kbd_qwerty_f2.xml
Normal file
|
@ -0,0 +1,77 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
**
|
||||
** Copyright 2011, The Android Open Source Project
|
||||
**
|
||||
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||
** you may not use this file except in compliance with the License.
|
||||
** You may obtain a copy of the License at
|
||||
**
|
||||
** http://www.apache.org/licenses/LICENSE-2.0
|
||||
**
|
||||
** Unless required by applicable law or agreed to in writing, software
|
||||
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
** See the License for the specific language governing permissions and
|
||||
** limitations under the License.
|
||||
*/
|
||||
-->
|
||||
|
||||
<merge
|
||||
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
|
||||
>
|
||||
<switch>
|
||||
<case
|
||||
latin:f2KeyMode="settings"
|
||||
>
|
||||
<Key
|
||||
latin:keyStyle="settingsKeyStyle"
|
||||
latin:keyWidth="0%p"
|
||||
latin:keyEdgeFlags="right" />
|
||||
</case>
|
||||
<case
|
||||
latin:f2KeyMode="shortcutIme"
|
||||
>
|
||||
<switch>
|
||||
<case
|
||||
latin:voiceKeyEnabled="true"
|
||||
>
|
||||
<Key
|
||||
latin:keyStyle="micKeyStyle"
|
||||
latin:keyWidth="0%p"
|
||||
latin:keyEdgeFlags="right" />
|
||||
</case>
|
||||
<!-- voiceKeyEnabled="false" -->
|
||||
<default>
|
||||
<Spacer />
|
||||
</default>
|
||||
</switch>
|
||||
</case>
|
||||
<case
|
||||
latin:f2KeyMode="shortcutImeOrSettings"
|
||||
>
|
||||
<switch>
|
||||
<case
|
||||
latin:voiceKeyEnabled="true"
|
||||
>
|
||||
<Key
|
||||
latin:keyStyle="micKeyStyle"
|
||||
latin:keyWidth="0%p"
|
||||
latin:keyEdgeFlags="right" />
|
||||
</case>
|
||||
<!-- voiceKeyEnabled="false" -->
|
||||
<default>
|
||||
<Key
|
||||
latin:keyStyle="settingsKeyStyle"
|
||||
latin:keyWidth="0%p"
|
||||
latin:keyEdgeFlags="right" />
|
||||
</default>
|
||||
</switch>
|
||||
</case>
|
||||
<!-- f2KeyMode="none" -->
|
||||
<default>
|
||||
<Spacer />
|
||||
</default>
|
||||
</switch>
|
||||
</merge>
|
|
@ -161,10 +161,10 @@
|
|||
</switch>
|
||||
</default>
|
||||
</switch>
|
||||
<Key
|
||||
latin:keyStyle="micOrSettingsKeyStyle"
|
||||
latin:keyXPos="-10.0%p"
|
||||
latin:keyWidth="0%p"
|
||||
latin:keyEdgeFlags="right" />
|
||||
<Spacer
|
||||
latin:keyXPos="-10.00%p"
|
||||
latin:keyWidth="0dp" />
|
||||
<include
|
||||
latin:keyboardLayout="@xml/kbd_qwerty_f2" />
|
||||
</Row>
|
||||
</merge>
|
||||
|
|
|
@ -216,10 +216,10 @@
|
|||
latin:keyWidth="9.750%p" />
|
||||
</default>
|
||||
</switch>
|
||||
<Key
|
||||
latin:keyStyle="micOrSettingsKeyStyle"
|
||||
latin:keyXPos="-10.0%p"
|
||||
latin:keyWidth="0%p"
|
||||
latin:keyEdgeFlags="right" />
|
||||
<Spacer
|
||||
latin:keyXPos="-10.00%p"
|
||||
latin:keyWidth="0dp" />
|
||||
<include
|
||||
latin:keyboardLayout="@xml/kbd_qwerty_f2" />
|
||||
</Row>
|
||||
</Keyboard>
|
||||
|
|
|
@ -154,10 +154,10 @@
|
|||
latin:keyStyle="spaceKeyStyle"
|
||||
latin:keyXPos="30.750%p"
|
||||
latin:keyWidth="39.750%p" />
|
||||
<Key
|
||||
latin:keyStyle="micOrSettingsKeyStyle"
|
||||
latin:keyXPos="-10.0%p"
|
||||
latin:keyWidth="0.0%p"
|
||||
latin:keyEdgeFlags="right" />
|
||||
<Spacer
|
||||
latin:keyXPos="-10.00%p"
|
||||
latin:keyWidth="0dp" />
|
||||
<include
|
||||
latin:keyboardLayout="@xml/kbd_qwerty_f2" />
|
||||
</Row>
|
||||
</Keyboard>
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<!-- Base key style for the key which may have settings key as popup key -->
|
||||
<switch>
|
||||
<case
|
||||
latin:hasSettingsKey="true"
|
||||
latin:clobberSettingsKey="true"
|
||||
>
|
||||
<key-style
|
||||
latin:styleName="settingsPopupStyle"
|
||||
|
|
|
@ -36,6 +36,11 @@ public class KeyboardId {
|
|||
public static final int MODE_PHONE = 4;
|
||||
public static final int MODE_NUMBER = 5;
|
||||
|
||||
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;
|
||||
|
||||
public final Locale mLocale;
|
||||
public final int mOrientation;
|
||||
public final int mMode;
|
||||
|
@ -43,7 +48,10 @@ public class KeyboardId {
|
|||
public final int mColorScheme;
|
||||
public final boolean mWebInput;
|
||||
public final boolean mPasswordInput;
|
||||
// TODO: Clean up these booleans and modes.
|
||||
public final boolean mHasSettingsKey;
|
||||
public final int mF2KeyMode;
|
||||
public final boolean mClobberSettingsKey;
|
||||
public final boolean mVoiceKeyEnabled;
|
||||
public final boolean mHasVoiceKey;
|
||||
public final int mImeAction;
|
||||
|
@ -53,8 +61,9 @@ public class KeyboardId {
|
|||
private final int mHashCode;
|
||||
|
||||
public KeyboardId(String xmlName, int xmlId, int colorScheme, Locale locale, int orientation,
|
||||
int mode, EditorInfo attribute, boolean hasSettingsKey, boolean voiceKeyEnabled,
|
||||
boolean hasVoiceKey, boolean enableShiftLock) {
|
||||
int mode, EditorInfo attribute, boolean hasSettingsKey, int f2KeyMode,
|
||||
boolean clobberSettingsKey, boolean voiceKeyEnabled, boolean hasVoiceKey,
|
||||
boolean enableShiftLock) {
|
||||
final int inputType = (attribute != null) ? attribute.inputType : 0;
|
||||
final int imeOptions = (attribute != null) ? attribute.imeOptions : 0;
|
||||
this.mLocale = locale;
|
||||
|
@ -66,6 +75,8 @@ public class KeyboardId {
|
|||
this.mPasswordInput = Utils.isPasswordInputType(inputType)
|
||||
|| Utils.isVisiblePasswordInputType(inputType);
|
||||
this.mHasSettingsKey = hasSettingsKey;
|
||||
this.mF2KeyMode = f2KeyMode;
|
||||
this.mClobberSettingsKey = clobberSettingsKey;
|
||||
this.mVoiceKeyEnabled = voiceKeyEnabled;
|
||||
this.mHasVoiceKey = hasVoiceKey;
|
||||
// We are interested only in {@link EditorInfo#IME_MASK_ACTION} enum value and
|
||||
|
@ -84,6 +95,8 @@ public class KeyboardId {
|
|||
mWebInput,
|
||||
mPasswordInput,
|
||||
hasSettingsKey,
|
||||
f2KeyMode,
|
||||
clobberSettingsKey,
|
||||
voiceKeyEnabled,
|
||||
hasVoiceKey,
|
||||
mImeAction,
|
||||
|
@ -125,6 +138,8 @@ public class KeyboardId {
|
|||
&& other.mWebInput == this.mWebInput
|
||||
&& other.mPasswordInput == this.mPasswordInput
|
||||
&& other.mHasSettingsKey == this.mHasSettingsKey
|
||||
&& other.mF2KeyMode == this.mF2KeyMode
|
||||
&& other.mClobberSettingsKey == this.mClobberSettingsKey
|
||||
&& other.mVoiceKeyEnabled == this.mVoiceKeyEnabled
|
||||
&& other.mHasVoiceKey == this.mHasVoiceKey
|
||||
&& other.mImeAction == this.mImeAction
|
||||
|
@ -138,13 +153,15 @@ public class KeyboardId {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("[%s.xml %s %s %s %s %s%s%s%s%s%s%s]",
|
||||
return String.format("[%s.xml %s %s %s %s %s %s%s%s%s%s%s%s%s]",
|
||||
mXmlName,
|
||||
mLocale,
|
||||
(mOrientation == 1 ? "port" : "land"),
|
||||
modeName(mMode),
|
||||
imeOptionsName(mImeAction),
|
||||
colorSchemeName(mColorScheme),
|
||||
f2KeyModeName(mF2KeyMode),
|
||||
(mClobberSettingsKey ? " clobberSettingsKey" : ""),
|
||||
(mWebInput ? " webInput" : ""),
|
||||
(mPasswordInput ? " passwordInput" : ""),
|
||||
(mHasSettingsKey ? " hasSettingsKey" : ""),
|
||||
|
@ -195,5 +212,15 @@ public class KeyboardId {
|
|||
return action;
|
||||
}
|
||||
}
|
||||
|
||||
public static String f2KeyModeName(int f2KeyMode) {
|
||||
switch (f2KeyMode) {
|
||||
case F2KEY_MODE_NONE: return "none";
|
||||
case F2KEY_MODE_SETTINGS: return "settings";
|
||||
case F2KEY_MODE_SHORTCUT_IME: return "shortcutIme";
|
||||
case F2KEY_MODE_SHORTCUT_IME_OR_SETTINGS: return "shortcutImeOrSettings";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -438,6 +438,10 @@ public class KeyboardParser {
|
|||
R.styleable.Keyboard_Case_passwordInput, id.mPasswordInput);
|
||||
final boolean settingsKeyMatched = matchBoolean(a,
|
||||
R.styleable.Keyboard_Case_hasSettingsKey, id.mHasSettingsKey);
|
||||
final boolean f2KeyModeMatched = matchInteger(a,
|
||||
R.styleable.Keyboard_Case_f2KeyMode, id.mF2KeyMode);
|
||||
final boolean clobberSettingsKeyMatched = matchBoolean(a,
|
||||
R.styleable.Keyboard_Case_clobberSettingsKey, id.mClobberSettingsKey);
|
||||
final boolean voiceEnabledMatched = matchBoolean(a,
|
||||
R.styleable.Keyboard_Case_voiceKeyEnabled, id.mVoiceKeyEnabled);
|
||||
final boolean voiceKeyMatched = matchBoolean(a,
|
||||
|
@ -455,11 +459,11 @@ public class KeyboardParser {
|
|||
final boolean countryCodeMatched = matchString(a,
|
||||
R.styleable.Keyboard_Case_countryCode, id.mLocale.getCountry());
|
||||
final boolean selected = modeMatched && webInputMatched && passwordInputMatched
|
||||
&& settingsKeyMatched && voiceEnabledMatched && voiceKeyMatched
|
||||
&& colorSchemeMatched && imeActionMatched && languageCodeMatched
|
||||
&& countryCodeMatched;
|
||||
&& settingsKeyMatched && f2KeyModeMatched && clobberSettingsKeyMatched
|
||||
&& voiceEnabledMatched && voiceKeyMatched && colorSchemeMatched
|
||||
&& imeActionMatched && languageCodeMatched && countryCodeMatched;
|
||||
|
||||
if (DEBUG) Log.d(TAG, String.format("<%s%s%s%s%s%s%s%s%s%s%s> %s", TAG_CASE,
|
||||
if (DEBUG) Log.d(TAG, String.format("<%s%s%s%s%s%s%s%s%s%s%s%s%s> %s", TAG_CASE,
|
||||
textAttr(KeyboardId.modeName(
|
||||
a.getInt(R.styleable.Keyboard_Case_mode, -1)), "mode"),
|
||||
textAttr(KeyboardId.colorSchemeName(
|
||||
|
@ -468,6 +472,10 @@ public class KeyboardParser {
|
|||
booleanAttr(a, R.styleable.Keyboard_Case_webInput, "webInput"),
|
||||
booleanAttr(a, R.styleable.Keyboard_Case_passwordInput, "passwordInput"),
|
||||
booleanAttr(a, R.styleable.Keyboard_Case_hasSettingsKey, "hasSettingsKey"),
|
||||
textAttr(KeyboardId.f2KeyModeName(
|
||||
a.getInt(R.styleable.Keyboard_Case_f2KeyMode, -1)), "f2KeyMode"),
|
||||
booleanAttr(a, R.styleable.Keyboard_Case_clobberSettingsKey,
|
||||
"clobberSettingsKey"),
|
||||
booleanAttr(a, R.styleable.Keyboard_Case_voiceKeyEnabled, "voiceKeyEnabled"),
|
||||
booleanAttr(a, R.styleable.Keyboard_Case_hasVoiceKey, "hasVoiceKey"),
|
||||
textAttr(KeyboardId.imeOptionsName(
|
||||
|
|
|
@ -36,8 +36,8 @@ import java.util.HashMap;
|
|||
import java.util.Locale;
|
||||
|
||||
public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
private static final String TAG = "KeyboardSwitcher";
|
||||
private static final boolean DEBUG = false;
|
||||
private static final String TAG = KeyboardSwitcher.class.getSimpleName();
|
||||
private static final boolean DEBUG = LatinImeLogger.sDBG;
|
||||
public static final boolean DEBUG_STATE = false;
|
||||
|
||||
private static String sConfigDefaultKeyboardThemeId;
|
||||
|
@ -238,12 +238,17 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
|
|||
}
|
||||
}
|
||||
final boolean hasSettingsKey = hasSettingsKey(attribute);
|
||||
final int f2KeyMode = getF2KeyMode(mPrefs, mInputMethodService, attribute);
|
||||
final boolean clobberSettingsKey = Utils.inPrivateImeOptions(
|
||||
mInputMethodService.getPackageName(), LatinIME.IME_OPTION_NO_SETTINGS_KEY,
|
||||
attribute);
|
||||
final Resources res = mInputMethodService.getResources();
|
||||
final int orientation = res.getConfiguration().orientation;
|
||||
final Locale locale = mSubtypeSwitcher.getInputLocale();
|
||||
return new KeyboardId(
|
||||
res.getResourceEntryName(xmlId), xmlId, charColorId, locale, orientation, mode,
|
||||
attribute, hasSettingsKey, mVoiceKeyEnabled, hasVoiceKey, enableShiftLock);
|
||||
attribute, hasSettingsKey, f2KeyMode, clobberSettingsKey, mVoiceKeyEnabled,
|
||||
hasVoiceKey, enableShiftLock);
|
||||
}
|
||||
|
||||
private void makeSymbolsKeyboardIds(final int mode, EditorInfo attribute) {
|
||||
|
@ -253,6 +258,10 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
|
|||
final int colorScheme = getColorScheme();
|
||||
final boolean hasVoiceKey = mVoiceKeyEnabled && !mVoiceButtonOnPrimary;
|
||||
final boolean hasSettingsKey = hasSettingsKey(attribute);
|
||||
final int f2KeyMode = getF2KeyMode(mPrefs, mInputMethodService, attribute);
|
||||
final boolean clobberSettingsKey = Utils.inPrivateImeOptions(
|
||||
mInputMethodService.getPackageName(), LatinIME.IME_OPTION_NO_SETTINGS_KEY,
|
||||
attribute);
|
||||
// Note: This comment is only applied for phone number keyboard layout.
|
||||
// On non-xlarge device, "@integer/key_switch_alpha_symbol" key code is used to switch
|
||||
// between "phone keyboard" and "phone symbols keyboard". But on xlarge device,
|
||||
|
@ -263,10 +272,12 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
|
|||
int xmlId = mode == KeyboardId.MODE_PHONE ? R.xml.kbd_phone : R.xml.kbd_symbols;
|
||||
final String xmlName = res.getResourceEntryName(xmlId);
|
||||
mSymbolsId = new KeyboardId(xmlName, xmlId, colorScheme, locale, orientation, mode,
|
||||
attribute, hasSettingsKey, mVoiceKeyEnabled, hasVoiceKey, true);
|
||||
attribute, hasSettingsKey, f2KeyMode, clobberSettingsKey, mVoiceKeyEnabled,
|
||||
hasVoiceKey, true);
|
||||
xmlId = mode == KeyboardId.MODE_PHONE ? R.xml.kbd_phone_symbols : R.xml.kbd_symbols_shift;
|
||||
mSymbolsShiftedId = new KeyboardId(xmlName, xmlId, colorScheme, locale, orientation, mode,
|
||||
attribute, hasSettingsKey, mVoiceKeyEnabled, hasVoiceKey, true);
|
||||
attribute, hasSettingsKey, f2KeyMode, clobberSettingsKey, mVoiceKeyEnabled,
|
||||
hasVoiceKey, true);
|
||||
}
|
||||
|
||||
public int getKeyboardMode() {
|
||||
|
@ -745,16 +756,16 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
|
|||
}
|
||||
|
||||
private static boolean getSettingsKeyMode(SharedPreferences prefs, Context context) {
|
||||
Resources resources = context.getResources();
|
||||
final boolean showSettingsKeyOption = resources.getBoolean(
|
||||
final Resources res = context.getResources();
|
||||
final boolean showSettingsKeyOption = res.getBoolean(
|
||||
R.bool.config_enable_show_settings_key_option);
|
||||
if (showSettingsKeyOption) {
|
||||
final String settingsKeyMode = prefs.getString(Settings.PREF_SETTINGS_KEY,
|
||||
resources.getString(DEFAULT_SETTINGS_KEY_MODE));
|
||||
res.getString(DEFAULT_SETTINGS_KEY_MODE));
|
||||
// We show the settings key when 1) SETTINGS_KEY_MODE_ALWAYS_SHOW or
|
||||
// 2) SETTINGS_KEY_MODE_AUTO and there are two or more enabled IMEs on the system
|
||||
if (settingsKeyMode.equals(resources.getString(SETTINGS_KEY_MODE_ALWAYS_SHOW))
|
||||
|| (settingsKeyMode.equals(resources.getString(SETTINGS_KEY_MODE_AUTO))
|
||||
if (settingsKeyMode.equals(res.getString(SETTINGS_KEY_MODE_ALWAYS_SHOW))
|
||||
|| (settingsKeyMode.equals(res.getString(SETTINGS_KEY_MODE_AUTO))
|
||||
&& Utils.hasMultipleEnabledIMEsOrSubtypes(
|
||||
((InputMethodManager) context.getSystemService(
|
||||
Context.INPUT_METHOD_SERVICE))))) {
|
||||
|
@ -765,4 +776,21 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
|
|||
// If the show settings key option is disabled, we always try showing the settings key.
|
||||
return true;
|
||||
}
|
||||
|
||||
private static int getF2KeyMode(SharedPreferences prefs, Context context,
|
||||
EditorInfo attribute) {
|
||||
final boolean clobberSettingsKey = Utils.inPrivateImeOptions(context.getPackageName(),
|
||||
LatinIME.IME_OPTION_NO_SETTINGS_KEY, attribute);
|
||||
final Resources res = context.getResources();
|
||||
final String settingsKeyMode = prefs.getString(Settings.PREF_SETTINGS_KEY,
|
||||
res.getString(DEFAULT_SETTINGS_KEY_MODE));
|
||||
if (settingsKeyMode.equals(res.getString(SETTINGS_KEY_MODE_AUTO))) {
|
||||
return clobberSettingsKey ? KeyboardId.F2KEY_MODE_SHORTCUT_IME
|
||||
: KeyboardId.F2KEY_MODE_SHORTCUT_IME_OR_SETTINGS;
|
||||
} else if (settingsKeyMode.equals(res.getString(SETTINGS_KEY_MODE_ALWAYS_SHOW))) {
|
||||
return clobberSettingsKey ? KeyboardId.F2KEY_MODE_NONE : KeyboardId.F2KEY_MODE_SETTINGS;
|
||||
} else { // SETTINGS_KEY_MODE_ALWAYS_HIDE
|
||||
return KeyboardId.F2KEY_MODE_SHORTCUT_IME;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ public class SuggestTestsBase extends AndroidTestCase {
|
|||
return new KeyboardId(locale.toString() + " keyboard",
|
||||
com.android.inputmethod.latin.R.xml.kbd_qwerty, KeyboardView.COLOR_SCHEME_WHITE,
|
||||
locale, Configuration.ORIENTATION_LANDSCAPE, KeyboardId.MODE_TEXT,
|
||||
new EditorInfo(), false, false, false, false);
|
||||
new EditorInfo(), false, KeyboardId.F2KEY_MODE_NONE, false, false, false, false);
|
||||
}
|
||||
|
||||
protected InputStream openTestRawResource(int resIdInTest) {
|
||||
|
|
Loading…
Reference in a new issue