am fd2f4204
: Merge "Remove country name from space bar text when appropriate"
* commit 'fd2f4204421e4a9b06da807e765a650d59bea1ea': Remove country name from space bar text when appropriate
This commit is contained in:
commit
f4ccbc32bf
7 changed files with 261 additions and 142 deletions
|
@ -204,10 +204,12 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
||||||
keyboardView.updateShortcutKey(mSubtypeSwitcher.isShortcutImeReady());
|
keyboardView.updateShortcutKey(mSubtypeSwitcher.isShortcutImeReady());
|
||||||
final boolean subtypeChanged = (oldKeyboard == null)
|
final boolean subtypeChanged = (oldKeyboard == null)
|
||||||
|| !keyboard.mId.mLocale.equals(oldKeyboard.mId.mLocale);
|
|| !keyboard.mId.mLocale.equals(oldKeyboard.mId.mLocale);
|
||||||
final boolean needsToDisplayLanguage = mSubtypeSwitcher.needsToDisplayLanguage(
|
final int languageOnSpacebarFormatType = mSubtypeSwitcher.getLanguageOnSpacebarFormatType(
|
||||||
keyboard.mId.mSubtype);
|
keyboard.mId.mSubtype);
|
||||||
keyboardView.startDisplayLanguageOnSpacebar(subtypeChanged, needsToDisplayLanguage,
|
final boolean hasMultipleEnabledIMEsOrSubtypes = RichInputMethodManager.getInstance()
|
||||||
RichInputMethodManager.getInstance().hasMultipleEnabledIMEsOrSubtypes(true));
|
.hasMultipleEnabledIMEsOrSubtypes(true /* shouldIncludeAuxiliarySubtypes */);
|
||||||
|
keyboardView.startDisplayLanguageOnSpacebar(subtypeChanged, languageOnSpacebarFormatType,
|
||||||
|
hasMultipleEnabledIMEsOrSubtypes);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Keyboard getKeyboard() {
|
public Keyboard getKeyboard() {
|
||||||
|
|
|
@ -49,6 +49,7 @@ import com.android.inputmethod.keyboard.internal.GestureTrailsDrawingPreview;
|
||||||
import com.android.inputmethod.keyboard.internal.KeyDrawParams;
|
import com.android.inputmethod.keyboard.internal.KeyDrawParams;
|
||||||
import com.android.inputmethod.keyboard.internal.KeyPreviewChoreographer;
|
import com.android.inputmethod.keyboard.internal.KeyPreviewChoreographer;
|
||||||
import com.android.inputmethod.keyboard.internal.KeyPreviewDrawParams;
|
import com.android.inputmethod.keyboard.internal.KeyPreviewDrawParams;
|
||||||
|
import com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper;
|
||||||
import com.android.inputmethod.keyboard.internal.NonDistinctMultitouchHelper;
|
import com.android.inputmethod.keyboard.internal.NonDistinctMultitouchHelper;
|
||||||
import com.android.inputmethod.keyboard.internal.SlidingKeyInputDrawingPreview;
|
import com.android.inputmethod.keyboard.internal.SlidingKeyInputDrawingPreview;
|
||||||
import com.android.inputmethod.keyboard.internal.TimerHandler;
|
import com.android.inputmethod.keyboard.internal.TimerHandler;
|
||||||
|
@ -123,7 +124,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
||||||
// Stuff to draw language name on spacebar.
|
// Stuff to draw language name on spacebar.
|
||||||
private final int mLanguageOnSpacebarFinalAlpha;
|
private final int mLanguageOnSpacebarFinalAlpha;
|
||||||
private ObjectAnimator mLanguageOnSpacebarFadeoutAnimator;
|
private ObjectAnimator mLanguageOnSpacebarFadeoutAnimator;
|
||||||
private boolean mNeedsToDisplayLanguage;
|
private int mLanguageOnSpacebarFormatType;
|
||||||
private boolean mHasMultipleEnabledIMEsOrSubtypes;
|
private boolean mHasMultipleEnabledIMEsOrSubtypes;
|
||||||
private int mLanguageOnSpacebarAnimAlpha = Constants.Color.ALPHA_OPAQUE;
|
private int mLanguageOnSpacebarAnimAlpha = Constants.Color.ALPHA_OPAQUE;
|
||||||
private final float mLanguageOnSpacebarTextRatio;
|
private final float mLanguageOnSpacebarTextRatio;
|
||||||
|
@ -811,14 +812,16 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startDisplayLanguageOnSpacebar(final boolean subtypeChanged,
|
public void startDisplayLanguageOnSpacebar(final boolean subtypeChanged,
|
||||||
final boolean needsToDisplayLanguage, final boolean hasMultipleEnabledIMEsOrSubtypes) {
|
final int languageOnSpacebarFormatType,
|
||||||
mNeedsToDisplayLanguage = needsToDisplayLanguage;
|
final boolean hasMultipleEnabledIMEsOrSubtypes) {
|
||||||
|
mLanguageOnSpacebarFormatType = languageOnSpacebarFormatType;
|
||||||
mHasMultipleEnabledIMEsOrSubtypes = hasMultipleEnabledIMEsOrSubtypes;
|
mHasMultipleEnabledIMEsOrSubtypes = hasMultipleEnabledIMEsOrSubtypes;
|
||||||
final ObjectAnimator animator = mLanguageOnSpacebarFadeoutAnimator;
|
final ObjectAnimator animator = mLanguageOnSpacebarFadeoutAnimator;
|
||||||
if (animator == null) {
|
if (animator == null) {
|
||||||
mNeedsToDisplayLanguage = false;
|
mLanguageOnSpacebarFormatType = LanguageOnSpacebarHelper.FORMAT_TYPE_NONE;
|
||||||
} else {
|
} else {
|
||||||
if (subtypeChanged && needsToDisplayLanguage) {
|
if (subtypeChanged
|
||||||
|
&& languageOnSpacebarFormatType != LanguageOnSpacebarHelper.FORMAT_TYPE_NONE) {
|
||||||
setLanguageOnSpacebarAnimAlpha(Constants.Color.ALPHA_OPAQUE);
|
setLanguageOnSpacebarAnimAlpha(Constants.Color.ALPHA_OPAQUE);
|
||||||
if (animator.isStarted()) {
|
if (animator.isStarted()) {
|
||||||
animator.cancel();
|
animator.cancel();
|
||||||
|
@ -919,9 +922,11 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
||||||
private String layoutLanguageOnSpacebar(final Paint paint,
|
private String layoutLanguageOnSpacebar(final Paint paint,
|
||||||
final InputMethodSubtype subtype, final int width) {
|
final InputMethodSubtype subtype, final int width) {
|
||||||
// Choose appropriate language name to fit into the width.
|
// Choose appropriate language name to fit into the width.
|
||||||
final String fullText = SpacebarLanguageUtils.getFullDisplayName(subtype);
|
if (mLanguageOnSpacebarFormatType == LanguageOnSpacebarHelper.FORMAT_TYPE_FULL_LOCALE) {
|
||||||
if (fitsTextIntoWidth(width, fullText, paint)) {
|
final String fullText = SpacebarLanguageUtils.getFullDisplayName(subtype);
|
||||||
return fullText;
|
if (fitsTextIntoWidth(width, fullText, paint)) {
|
||||||
|
return fullText;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final String middleText = SpacebarLanguageUtils.getMiddleDisplayName(subtype);
|
final String middleText = SpacebarLanguageUtils.getMiddleDisplayName(subtype);
|
||||||
|
@ -937,7 +942,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
||||||
final int height = key.getHeight();
|
final int height = key.getHeight();
|
||||||
|
|
||||||
// If input language are explicitly selected.
|
// If input language are explicitly selected.
|
||||||
if (mNeedsToDisplayLanguage) {
|
if (mLanguageOnSpacebarFormatType != LanguageOnSpacebarHelper.FORMAT_TYPE_NONE) {
|
||||||
paint.setTextAlign(Align.CENTER);
|
paint.setTextAlign(Align.CENTER);
|
||||||
paint.setTypeface(Typeface.DEFAULT);
|
paint.setTypeface(Typeface.DEFAULT);
|
||||||
paint.setTextSize(mLanguageOnSpacebarTextSize);
|
paint.setTextSize(mLanguageOnSpacebarTextSize);
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2014 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.inputmethod.keyboard.internal;
|
||||||
|
|
||||||
|
import android.view.inputmethod.InputMethodSubtype;
|
||||||
|
|
||||||
|
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class determines that the language name on the spacebar should be displayed in what format.
|
||||||
|
*/
|
||||||
|
public final class LanguageOnSpacebarHelper {
|
||||||
|
public static final int FORMAT_TYPE_NONE = 0;
|
||||||
|
public static final int FORMAT_TYPE_LANGUAGE_ONLY = 1;
|
||||||
|
public static final int FORMAT_TYPE_FULL_LOCALE = 2;
|
||||||
|
|
||||||
|
private List<InputMethodSubtype> mEnabledSubtypes = Collections.emptyList();
|
||||||
|
private boolean mIsSystemLanguageSameAsInputLanguage;
|
||||||
|
|
||||||
|
public int getLanguageOnSpacebarFormatType(final InputMethodSubtype subtype) {
|
||||||
|
if (SubtypeLocaleUtils.isNoLanguage(subtype)) {
|
||||||
|
return FORMAT_TYPE_FULL_LOCALE;
|
||||||
|
}
|
||||||
|
// Only this subtype is enabled and equals to the system locale.
|
||||||
|
if (mEnabledSubtypes.size() < 2 && mIsSystemLanguageSameAsInputLanguage) {
|
||||||
|
return FORMAT_TYPE_NONE;
|
||||||
|
}
|
||||||
|
final String keyboardLanguage = SubtypeLocaleUtils.getSubtypeLocale(subtype).getLanguage();
|
||||||
|
final String keyboardLayout = SubtypeLocaleUtils.getKeyboardLayoutSetName(subtype);
|
||||||
|
int sameLanguageAndLayoutCount = 0;
|
||||||
|
for (final InputMethodSubtype ims : mEnabledSubtypes) {
|
||||||
|
final String language = SubtypeLocaleUtils.getSubtypeLocale(ims).getLanguage();
|
||||||
|
if (keyboardLanguage.equals(language) && keyboardLayout.equals(
|
||||||
|
SubtypeLocaleUtils.getKeyboardLayoutSetName(ims))) {
|
||||||
|
sameLanguageAndLayoutCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Display full locale name only when there are multiple subtypes that have the same
|
||||||
|
// locale and keyboard layout. Otherwise displaying language name is enough.
|
||||||
|
return sameLanguageAndLayoutCount > 1 ? FORMAT_TYPE_FULL_LOCALE
|
||||||
|
: FORMAT_TYPE_LANGUAGE_ONLY;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateEnabledSubtypes(final List<InputMethodSubtype> enabledSubtypes) {
|
||||||
|
mEnabledSubtypes = enabledSubtypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateIsSystemLanguageSameAsInputLanguage(final boolean isSame) {
|
||||||
|
mIsSystemLanguageSameAsInputLanguage = isSame;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,44 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2014 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.android.inputmethod.keyboard.internal;
|
|
||||||
|
|
||||||
import android.view.inputmethod.InputMethodSubtype;
|
|
||||||
|
|
||||||
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class determines that the language name on the spacebar should be displayed or not.
|
|
||||||
*/
|
|
||||||
public final class NeedsToDisplayLanguage {
|
|
||||||
private int mEnabledSubtypeCount;
|
|
||||||
private boolean mIsSystemLanguageSameAsInputLanguage;
|
|
||||||
|
|
||||||
public boolean needsToDisplayLanguage(final InputMethodSubtype subtype) {
|
|
||||||
if (SubtypeLocaleUtils.isNoLanguage(subtype)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return mEnabledSubtypeCount >= 2 || !mIsSystemLanguageSameAsInputLanguage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateEnabledSubtypeCount(final int count) {
|
|
||||||
mEnabledSubtypeCount = count;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateIsSystemLanguageSameAsInputLanguage(final boolean isSame) {
|
|
||||||
mIsSystemLanguageSameAsInputLanguage = isSame;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -34,7 +34,7 @@ import android.view.inputmethod.InputMethodSubtype;
|
||||||
import com.android.inputmethod.annotations.UsedForTesting;
|
import com.android.inputmethod.annotations.UsedForTesting;
|
||||||
import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
|
import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
|
||||||
import com.android.inputmethod.keyboard.KeyboardSwitcher;
|
import com.android.inputmethod.keyboard.KeyboardSwitcher;
|
||||||
import com.android.inputmethod.keyboard.internal.NeedsToDisplayLanguage;
|
import com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper;
|
||||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||||
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
||||||
|
|
||||||
|
@ -54,7 +54,8 @@ public final class SubtypeSwitcher {
|
||||||
private /* final */ Resources mResources;
|
private /* final */ Resources mResources;
|
||||||
private /* final */ ConnectivityManager mConnectivityManager;
|
private /* final */ ConnectivityManager mConnectivityManager;
|
||||||
|
|
||||||
private final NeedsToDisplayLanguage mNeedsToDisplayLanguage = new NeedsToDisplayLanguage();
|
private final LanguageOnSpacebarHelper mLanguageOnSpacebarHelper =
|
||||||
|
new LanguageOnSpacebarHelper();
|
||||||
private InputMethodInfo mShortcutInputMethodInfo;
|
private InputMethodInfo mShortcutInputMethodInfo;
|
||||||
private InputMethodSubtype mShortcutSubtype;
|
private InputMethodSubtype mShortcutSubtype;
|
||||||
private InputMethodSubtype mNoLanguageSubtype;
|
private InputMethodSubtype mNoLanguageSubtype;
|
||||||
|
@ -127,7 +128,7 @@ public final class SubtypeSwitcher {
|
||||||
public void updateParametersOnStartInputView() {
|
public void updateParametersOnStartInputView() {
|
||||||
final List<InputMethodSubtype> enabledSubtypesOfThisIme =
|
final List<InputMethodSubtype> enabledSubtypesOfThisIme =
|
||||||
mRichImm.getMyEnabledInputMethodSubtypeList(true);
|
mRichImm.getMyEnabledInputMethodSubtypeList(true);
|
||||||
mNeedsToDisplayLanguage.updateEnabledSubtypeCount(enabledSubtypesOfThisIme.size());
|
mLanguageOnSpacebarHelper.updateEnabledSubtypes(enabledSubtypesOfThisIme);
|
||||||
updateShortcutIME();
|
updateShortcutIME();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,7 +177,7 @@ public final class SubtypeSwitcher {
|
||||||
final boolean sameLanguage = systemLocale.getLanguage().equals(newLocale.getLanguage());
|
final boolean sameLanguage = systemLocale.getLanguage().equals(newLocale.getLanguage());
|
||||||
final boolean implicitlyEnabled =
|
final boolean implicitlyEnabled =
|
||||||
mRichImm.checkIfSubtypeBelongsToThisImeAndImplicitlyEnabled(newSubtype);
|
mRichImm.checkIfSubtypeBelongsToThisImeAndImplicitlyEnabled(newSubtype);
|
||||||
mNeedsToDisplayLanguage.updateIsSystemLanguageSameAsInputLanguage(
|
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(
|
||||||
sameLocale || (sameLanguage && implicitlyEnabled));
|
sameLocale || (sameLanguage && implicitlyEnabled));
|
||||||
|
|
||||||
updateShortcutIME();
|
updateShortcutIME();
|
||||||
|
@ -249,8 +250,8 @@ public final class SubtypeSwitcher {
|
||||||
// Subtype Switching functions //
|
// Subtype Switching functions //
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
|
|
||||||
public boolean needsToDisplayLanguage(final InputMethodSubtype subtype) {
|
public int getLanguageOnSpacebarFormatType(final InputMethodSubtype subtype) {
|
||||||
return mNeedsToDisplayLanguage.needsToDisplayLanguage(subtype);
|
return mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(subtype);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes() {
|
public boolean isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes() {
|
||||||
|
|
|
@ -0,0 +1,167 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2014 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.inputmethod.keyboard.internal;
|
||||||
|
|
||||||
|
import static com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper.FORMAT_TYPE_FULL_LOCALE;
|
||||||
|
import static com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper.FORMAT_TYPE_LANGUAGE_ONLY;
|
||||||
|
import static com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper.FORMAT_TYPE_NONE;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.test.AndroidTestCase;
|
||||||
|
import android.test.suitebuilder.annotation.SmallTest;
|
||||||
|
import android.view.inputmethod.InputMethodSubtype;
|
||||||
|
|
||||||
|
import com.android.inputmethod.latin.RichInputMethodManager;
|
||||||
|
import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils;
|
||||||
|
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
@SmallTest
|
||||||
|
public class LanguageOnSpacebarHelperTests extends AndroidTestCase {
|
||||||
|
private final LanguageOnSpacebarHelper mLanguageOnSpacebarHelper =
|
||||||
|
new LanguageOnSpacebarHelper();
|
||||||
|
|
||||||
|
private RichInputMethodManager mRichImm;
|
||||||
|
|
||||||
|
InputMethodSubtype EN_US_QWERTY;
|
||||||
|
InputMethodSubtype EN_GB_QWERTY;
|
||||||
|
InputMethodSubtype FR_AZERTY;
|
||||||
|
InputMethodSubtype FR_CA_QWERTY;
|
||||||
|
InputMethodSubtype FR_CH_SWISS;
|
||||||
|
InputMethodSubtype FR_CH_QWERTY;
|
||||||
|
InputMethodSubtype FR_CH_QWERTZ;
|
||||||
|
InputMethodSubtype ZZ_QWERTY;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setUp() throws Exception {
|
||||||
|
super.setUp();
|
||||||
|
final Context context = getContext();
|
||||||
|
RichInputMethodManager.init(context);
|
||||||
|
mRichImm = RichInputMethodManager.getInstance();
|
||||||
|
SubtypeLocaleUtils.init(context);
|
||||||
|
|
||||||
|
EN_US_QWERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||||
|
Locale.US.toString(), "qwerty");
|
||||||
|
EN_GB_QWERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||||
|
Locale.UK.toString(), "qwerty");
|
||||||
|
FR_AZERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||||
|
Locale.FRENCH.toString(), "azerty");
|
||||||
|
FR_CA_QWERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||||
|
Locale.CANADA_FRENCH.toString(), "qwerty");
|
||||||
|
FR_CH_SWISS = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||||
|
"fr_CH", "swiss");
|
||||||
|
FR_CH_QWERTZ = AdditionalSubtypeUtils.createAdditionalSubtype(
|
||||||
|
"fr_CH", "qwertz", null);
|
||||||
|
FR_CH_QWERTY = AdditionalSubtypeUtils.createAdditionalSubtype(
|
||||||
|
"fr_CH", "qwerty", null);
|
||||||
|
ZZ_QWERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
||||||
|
SubtypeLocaleUtils.NO_LANGUAGE, "qwerty");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<InputMethodSubtype> asList(final InputMethodSubtype ... subtypes) {
|
||||||
|
return Arrays.asList(subtypes);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testOneSubtype() {
|
||||||
|
mLanguageOnSpacebarHelper.updateEnabledSubtypes(asList(EN_US_QWERTY));
|
||||||
|
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
|
||||||
|
assertEquals("one same English (US)", FORMAT_TYPE_NONE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
|
||||||
|
assertEquals("one same NoLanguage", FORMAT_TYPE_FULL_LOCALE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
|
||||||
|
|
||||||
|
mLanguageOnSpacebarHelper.updateEnabledSubtypes(asList(FR_AZERTY));
|
||||||
|
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
|
||||||
|
assertEquals("one diff English (US)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
|
||||||
|
assertEquals("one diff NoLanguage", FORMAT_TYPE_FULL_LOCALE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testTwoSubtypes() {
|
||||||
|
mLanguageOnSpacebarHelper.updateEnabledSubtypes(asList(EN_US_QWERTY, FR_AZERTY));
|
||||||
|
|
||||||
|
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
|
||||||
|
assertEquals("two same English (US)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
|
||||||
|
assertEquals("two same French)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_AZERTY));
|
||||||
|
assertEquals("two same NoLanguage", FORMAT_TYPE_FULL_LOCALE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
|
||||||
|
|
||||||
|
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
|
||||||
|
assertEquals("two diff English (US)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
|
||||||
|
assertEquals("two diff French", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_AZERTY));
|
||||||
|
assertEquals("two diff NoLanguage", FORMAT_TYPE_FULL_LOCALE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testSameLanuageSubtypes() {
|
||||||
|
mLanguageOnSpacebarHelper.updateEnabledSubtypes(
|
||||||
|
asList(EN_US_QWERTY, EN_GB_QWERTY, FR_AZERTY, ZZ_QWERTY));
|
||||||
|
|
||||||
|
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
|
||||||
|
assertEquals("two same English (US)", FORMAT_TYPE_FULL_LOCALE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
|
||||||
|
assertEquals("two same English (UK)", FORMAT_TYPE_FULL_LOCALE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_GB_QWERTY));
|
||||||
|
assertEquals("two same NoLanguage", FORMAT_TYPE_FULL_LOCALE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
|
||||||
|
|
||||||
|
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
|
||||||
|
assertEquals("two diff English (US)", FORMAT_TYPE_FULL_LOCALE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
|
||||||
|
assertEquals("two diff English (UK)", FORMAT_TYPE_FULL_LOCALE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_GB_QWERTY));
|
||||||
|
assertEquals("two diff NoLanguage", FORMAT_TYPE_FULL_LOCALE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testMultiSameLanuageSubtypes() {
|
||||||
|
mLanguageOnSpacebarHelper.updateEnabledSubtypes(
|
||||||
|
asList(FR_AZERTY, FR_CA_QWERTY, FR_CH_SWISS, FR_CH_QWERTY, FR_CH_QWERTZ));
|
||||||
|
|
||||||
|
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
|
||||||
|
assertEquals("multi same French", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_AZERTY));
|
||||||
|
assertEquals("multi same French (CA)", FORMAT_TYPE_FULL_LOCALE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CA_QWERTY));
|
||||||
|
assertEquals("multi same French (CH)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_SWISS));
|
||||||
|
assertEquals("multi same French (CH) (QWERTY)", FORMAT_TYPE_FULL_LOCALE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_QWERTY));
|
||||||
|
assertEquals("multi same French (CH) (QWERTZ)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_QWERTZ));
|
||||||
|
|
||||||
|
mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
|
||||||
|
assertEquals("multi diff French", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_AZERTY));
|
||||||
|
assertEquals("multi diff French (CA)", FORMAT_TYPE_FULL_LOCALE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CA_QWERTY));
|
||||||
|
assertEquals("multi diff French (CH)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_SWISS));
|
||||||
|
assertEquals("multi diff French (CH) (QWERTY)", FORMAT_TYPE_FULL_LOCALE,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_QWERTY));
|
||||||
|
assertEquals("multi diff French (CH) (QWERTZ)", FORMAT_TYPE_LANGUAGE_ONLY,
|
||||||
|
mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_QWERTZ));
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,80 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2014 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.android.inputmethod.keyboard.internal;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.test.AndroidTestCase;
|
|
||||||
import android.test.suitebuilder.annotation.SmallTest;
|
|
||||||
import android.view.inputmethod.InputMethodSubtype;
|
|
||||||
|
|
||||||
import com.android.inputmethod.latin.RichInputMethodManager;
|
|
||||||
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
|
||||||
|
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
public class NeedsToDisplayLanguageTests extends AndroidTestCase {
|
|
||||||
private final NeedsToDisplayLanguage mNeedsToDisplayLanguage = new NeedsToDisplayLanguage();
|
|
||||||
|
|
||||||
private RichInputMethodManager mRichImm;
|
|
||||||
|
|
||||||
InputMethodSubtype EN_US;
|
|
||||||
InputMethodSubtype FR;
|
|
||||||
InputMethodSubtype ZZ;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void setUp() throws Exception {
|
|
||||||
super.setUp();
|
|
||||||
final Context context = getContext();
|
|
||||||
RichInputMethodManager.init(context);
|
|
||||||
mRichImm = RichInputMethodManager.getInstance();
|
|
||||||
SubtypeLocaleUtils.init(context);
|
|
||||||
|
|
||||||
EN_US = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
|
||||||
Locale.US.toString(), "qwerty");
|
|
||||||
FR = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
|
||||||
Locale.FRENCH.toString(), "azerty");
|
|
||||||
ZZ = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
|
|
||||||
SubtypeLocaleUtils.NO_LANGUAGE, "qwerty");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testOneSubtype() {
|
|
||||||
mNeedsToDisplayLanguage.updateEnabledSubtypeCount(1);
|
|
||||||
|
|
||||||
mNeedsToDisplayLanguage.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
|
|
||||||
assertFalse("one same English (US)", mNeedsToDisplayLanguage.needsToDisplayLanguage(EN_US));
|
|
||||||
assertTrue("one same NoLanguage", mNeedsToDisplayLanguage.needsToDisplayLanguage(ZZ));
|
|
||||||
|
|
||||||
mNeedsToDisplayLanguage.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
|
|
||||||
assertTrue("one diff English (US)", mNeedsToDisplayLanguage.needsToDisplayLanguage(EN_US));
|
|
||||||
assertTrue("one diff NoLanguage", mNeedsToDisplayLanguage.needsToDisplayLanguage(ZZ));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testTwoSubtype() {
|
|
||||||
mNeedsToDisplayLanguage.updateEnabledSubtypeCount(2);
|
|
||||||
|
|
||||||
mNeedsToDisplayLanguage.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
|
|
||||||
assertTrue("two same English (US)", mNeedsToDisplayLanguage.needsToDisplayLanguage(EN_US));
|
|
||||||
assertTrue("two same French", mNeedsToDisplayLanguage.needsToDisplayLanguage(FR));
|
|
||||||
assertTrue("two same NoLanguage", mNeedsToDisplayLanguage.needsToDisplayLanguage(ZZ));
|
|
||||||
|
|
||||||
mNeedsToDisplayLanguage.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
|
|
||||||
assertTrue("two diff English (US)", mNeedsToDisplayLanguage.needsToDisplayLanguage(EN_US));
|
|
||||||
assertTrue("two diff French", mNeedsToDisplayLanguage.needsToDisplayLanguage(ZZ));
|
|
||||||
assertTrue("two diff NoLanguage", mNeedsToDisplayLanguage.needsToDisplayLanguage(FR));
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue