Add Spanish United States keyboard
The subtype locale name on the spacebar will be suppressed when only one subtype is enabled and - Subtype locale is equal to the system locale. or - Subtype language is equal to the system language but the subtype is implicitly enabled. Thus the "es_ES" system locale chooses "es" subtype keyboard implicitly but the keyboard doesn't have the subtype name on its spacebar. This change also removes Spanish Latin America keyboard. Bug: 7531804 Change-Id: Ib929e8235d643c0ba039eb010e18ab721a734e15main
parent
9904c9ebbd
commit
76d4ffeebf
|
@ -140,10 +140,12 @@
|
|||
<string-array name="subtype_locale_exception_keys">
|
||||
<item>en_US</item>
|
||||
<item>en_GB</item>
|
||||
<item>es_US</item>
|
||||
</string-array>
|
||||
<string-array name="subtype_locale_exception_values">
|
||||
<item>English (US)</item>
|
||||
<item>English (UK)</item>
|
||||
<item>Español (EE.UU.)</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Generic subtype label -->
|
||||
|
|
|
@ -36,7 +36,8 @@
|
|||
en_GB: English Great Britain/qwerty
|
||||
eo: Esperanto/spanish
|
||||
es: Spanish/spanish
|
||||
es_419: Spanish Latin America/qwerty
|
||||
es_US: Spanish United States/spanish
|
||||
(es_419: Spanish Latin America/qwerty)
|
||||
et: Estonian/nordic
|
||||
fa: Persian/arabic
|
||||
fi: Finnish/nordic
|
||||
|
@ -184,13 +185,22 @@
|
|||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection"
|
||||
/>
|
||||
<subtype android:icon="@drawable/ic_subtype_keyboard"
|
||||
android:label="@string/subtype_generic"
|
||||
android:subtypeId="0x84d2efc6"
|
||||
android:imeSubtypeLocale="es_US"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable"
|
||||
/>
|
||||
<!--
|
||||
<subtype android:icon="@drawable/ic_subtype_keyboard"
|
||||
android:label="@string/subtype_generic"
|
||||
android:subtypeId="0x623f9286"
|
||||
android:imeSubtypeLocale="es_419"
|
||||
android:imeSubtypeMode="keyboard"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable"
|
||||
android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable"
|
||||
/>
|
||||
-->
|
||||
<subtype android:icon="@drawable/ic_subtype_keyboard"
|
||||
android:label="@string/subtype_generic"
|
||||
android:subtypeId="0xec2d3955"
|
||||
|
|
|
@ -1030,9 +1030,10 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
|||
// InputMethodSubtype's display name for spacebar text in its locale.
|
||||
// isAdditionalSubtype (T=true, F=false)
|
||||
// locale layout | Short Middle Full
|
||||
// ------ ------ - ---- --------- ----------------------
|
||||
// ------ ------- - ---- --------- ----------------------
|
||||
// en_US qwerty F En English English (US) exception
|
||||
// en_GB qwerty F En English English (UK) exception
|
||||
// es_US spanish F Es Español Español (EE.UU.) exception
|
||||
// fr azerty F Fr Français Français
|
||||
// fr_CA qwerty F Fr Français Français (Canada)
|
||||
// de qwertz F De Deutsch Deutsch
|
||||
|
|
|
@ -87,6 +87,9 @@ public final class AdditionalSubtypeSettings extends PreferenceFragment {
|
|||
}
|
||||
|
||||
static final class SubtypeLocaleAdapter extends ArrayAdapter<SubtypeLocaleItem> {
|
||||
private static final String TAG = SubtypeLocaleAdapter.class.getSimpleName();
|
||||
private static final boolean DEBUG_SUBTYPE_ID = false;
|
||||
|
||||
public SubtypeLocaleAdapter(final Context context) {
|
||||
super(context, android.R.layout.simple_spinner_item);
|
||||
setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
|
@ -97,6 +100,11 @@ public final class AdditionalSubtypeSettings extends PreferenceFragment {
|
|||
final int count = imi.getSubtypeCount();
|
||||
for (int i = 0; i < count; i++) {
|
||||
final InputMethodSubtype subtype = imi.getSubtypeAt(i);
|
||||
if (DEBUG_SUBTYPE_ID) {
|
||||
android.util.Log.d(TAG, String.format("%-6s 0x%08x %11d %s",
|
||||
subtype.getLocale(), subtype.hashCode(), subtype.hashCode(),
|
||||
SubtypeLocale.getSubtypeDisplayName(subtype, context.getResources())));
|
||||
}
|
||||
if (subtype.containsExtraValueKey(ASCII_CAPABLE)) {
|
||||
items.add(createItem(context, subtype.getLocale()));
|
||||
}
|
||||
|
|
|
@ -96,28 +96,42 @@ public final class RichInputMethodManager {
|
|||
return mInputMethodInfoOfThisIme.getId();
|
||||
}
|
||||
|
||||
public boolean checkIfSubtypeBelongsToThisImeAndEnabled(final InputMethodSubtype ims) {
|
||||
return checkIfSubtypeBelongsToImeAndEnabled(mInputMethodInfoOfThisIme, ims);
|
||||
public boolean checkIfSubtypeBelongsToThisImeAndEnabled(final InputMethodSubtype subtype) {
|
||||
return checkIfSubtypeBelongsToImeAndEnabled(mInputMethodInfoOfThisIme, subtype);
|
||||
}
|
||||
|
||||
public boolean checkIfSubtypeBelongsToThisImeAndImplicitlyEnabled(
|
||||
final InputMethodSubtype subtype) {
|
||||
final boolean subtypeEnabled = checkIfSubtypeBelongsToThisImeAndEnabled(subtype);
|
||||
final boolean subtypeExplicitlyEnabled = checkIfSubtypeBelongsToList(
|
||||
subtype, mImmWrapper.mImm.getEnabledInputMethodSubtypeList(
|
||||
mInputMethodInfoOfThisIme, false /* allowsImplicitlySelectedSubtypes */));
|
||||
return subtypeEnabled && !subtypeExplicitlyEnabled;
|
||||
}
|
||||
|
||||
public boolean checkIfSubtypeBelongsToImeAndEnabled(final InputMethodInfo imi,
|
||||
final InputMethodSubtype ims) {
|
||||
final List<InputMethodSubtype> subtypes = mImmWrapper.mImm.getEnabledInputMethodSubtypeList(
|
||||
imi, true /* allowsImplicitlySelectedSubtypes */);
|
||||
for (final InputMethodSubtype subtype : subtypes) {
|
||||
if (subtype.equals(ims)) {
|
||||
final InputMethodSubtype subtype) {
|
||||
return checkIfSubtypeBelongsToList(
|
||||
subtype, mImmWrapper.mImm.getEnabledInputMethodSubtypeList(
|
||||
imi, true /* allowsImplicitlySelectedSubtypes */));
|
||||
}
|
||||
|
||||
private static boolean checkIfSubtypeBelongsToList(final InputMethodSubtype subtype,
|
||||
final List<InputMethodSubtype> subtypes) {
|
||||
for (final InputMethodSubtype ims : subtypes) {
|
||||
if (ims.equals(subtype)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean checkIfSubtypeBelongsToThisIme(final InputMethodSubtype ims) {
|
||||
public boolean checkIfSubtypeBelongsToThisIme(final InputMethodSubtype subtype) {
|
||||
final InputMethodInfo myImi = mInputMethodInfoOfThisIme;
|
||||
final int count = myImi.getSubtypeCount();
|
||||
for (int i = 0; i < count; i++) {
|
||||
final InputMethodSubtype subtype = myImi.getSubtypeAt(i);
|
||||
if (subtype.equals(ims)) {
|
||||
final InputMethodSubtype ims = myImi.getSubtypeAt(i);
|
||||
if (ims.equals(subtype)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -152,9 +152,10 @@ public final class SubtypeLocale {
|
|||
// InputMethodSubtype's display name in its locale.
|
||||
// isAdditionalSubtype (T=true, F=false)
|
||||
// locale layout | display name
|
||||
// ------ ------ - ----------------------
|
||||
// ------ ------- - ----------------------
|
||||
// en_US qwerty F English (US) exception
|
||||
// en_GB qwerty F English (UK) exception
|
||||
// es_US spanish F Español (EE.UU.) exception
|
||||
// fr azerty F Français
|
||||
// fr_CA qwerty F Français (Canada)
|
||||
// de qwertz F Deutsch
|
||||
|
|
|
@ -193,8 +193,13 @@ public final class SubtypeSwitcher {
|
|||
}
|
||||
|
||||
final Locale newLocale = SubtypeLocale.getSubtypeLocale(newSubtype);
|
||||
final boolean sameLocale = mCurrentSystemLocale.equals(newLocale);
|
||||
final boolean sameLanguage = mCurrentSystemLocale.getLanguage().equals(
|
||||
newLocale.getLanguage());
|
||||
final boolean implicitlyEnabled =
|
||||
mRichImm.checkIfSubtypeBelongsToThisImeAndImplicitlyEnabled(newSubtype);
|
||||
mNeedsToDisplayLanguage.updateIsSystemLanguageSameAsInputLanguage(
|
||||
mCurrentSystemLocale.equals(newLocale));
|
||||
sameLocale || (sameLanguage && implicitlyEnabled));
|
||||
|
||||
if (newSubtype.equals(mCurrentSubtype)) return;
|
||||
|
||||
|
|
|
@ -60,9 +60,10 @@ public class SubtypeLocaleTests extends AndroidTestCase {
|
|||
// InputMethodSubtype's display name in its locale.
|
||||
// isAdditionalSubtype (T=true, F=false)
|
||||
// locale layout | display name
|
||||
// ------ ------ - ----------------------
|
||||
// ------ ------- - ----------------------
|
||||
// en_US qwerty F English (US) exception
|
||||
// en_GB qwerty F English (UK) exception
|
||||
// es_US spanish F Español (EE.UU.) exception
|
||||
// fr azerty F Français
|
||||
// fr_CA qwerty F Français (Canada)
|
||||
// de qwertz F Deutsch
|
||||
|
@ -77,6 +78,8 @@ public class SubtypeLocaleTests extends AndroidTestCase {
|
|||
Locale.US.toString(), "qwerty");
|
||||
final InputMethodSubtype EN_GB = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
Locale.UK.toString(), "qwerty");
|
||||
final InputMethodSubtype ES_US = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
"es_US", "spanish");
|
||||
final InputMethodSubtype FR = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
Locale.FRENCH.toString(), "azerty");
|
||||
final InputMethodSubtype FR_CA = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
|
@ -88,6 +91,7 @@ public class SubtypeLocaleTests extends AndroidTestCase {
|
|||
|
||||
assertEquals("en_US", "qwerty", SubtypeLocale.getKeyboardLayoutSetName(EN_US));
|
||||
assertEquals("en_GB", "qwerty", SubtypeLocale.getKeyboardLayoutSetName(EN_GB));
|
||||
assertEquals("es_US", "spanish", SubtypeLocale.getKeyboardLayoutSetName(ES_US));
|
||||
assertEquals("fr ", "azerty", SubtypeLocale.getKeyboardLayoutSetName(FR));
|
||||
assertEquals("fr_CA", "qwerty", SubtypeLocale.getKeyboardLayoutSetName(FR_CA));
|
||||
assertEquals("de ", "qwertz", SubtypeLocale.getKeyboardLayoutSetName(DE));
|
||||
|
@ -100,6 +104,8 @@ public class SubtypeLocaleTests extends AndroidTestCase {
|
|||
SubtypeLocale.getSubtypeDisplayName(EN_US, res));
|
||||
assertEquals("en_GB", "English (UK)",
|
||||
SubtypeLocale.getSubtypeDisplayName(EN_GB, res));
|
||||
assertEquals("es_US", "Español (EE.UU.)",
|
||||
SubtypeLocale.getSubtypeDisplayName(ES_US, res));
|
||||
assertEquals("fr ", "Français",
|
||||
SubtypeLocale.getSubtypeDisplayName(FR, res));
|
||||
assertEquals("fr_CA", "Français (Canada)",
|
||||
|
@ -146,6 +152,8 @@ public class SubtypeLocaleTests extends AndroidTestCase {
|
|||
Locale.US.toString(), "qwerty");
|
||||
final InputMethodSubtype EN_GB = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
Locale.UK.toString(), "qwerty");
|
||||
final InputMethodSubtype ES_US = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
"es_US", "spanish");
|
||||
final InputMethodSubtype FR = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
Locale.FRENCH.toString(), "azerty");
|
||||
final InputMethodSubtype FR_CA = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||
|
@ -162,6 +170,8 @@ public class SubtypeLocaleTests extends AndroidTestCase {
|
|||
SubtypeLocale.getSubtypeDisplayName(EN_US, res));
|
||||
assertEquals("en_GB", "English (UK)",
|
||||
SubtypeLocale.getSubtypeDisplayName(EN_GB, res));
|
||||
assertEquals("es_US", "Español (EE.UU.)",
|
||||
SubtypeLocale.getSubtypeDisplayName(ES_US, res));
|
||||
assertEquals("fr ", "Français",
|
||||
SubtypeLocale.getSubtypeDisplayName(FR, res));
|
||||
assertEquals("fr_CA", "Français (Canada)",
|
||||
|
|
Loading…
Reference in New Issue