diff options
Diffstat (limited to 'java/src/com/android/inputmethod')
-rw-r--r-- | java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java | 18 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/accessibility/MoreKeysKeyboardAccessibilityDelegate.java | 11 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java | 13 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java | 20 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/Constants.java | 6 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/LatinIME.java | 33 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdater.java (renamed from java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionarySessionRegistrar.java) | 27 |
7 files changed, 63 insertions, 65 deletions
diff --git a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java index 18673a366..cb13483f2 100644 --- a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java +++ b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java @@ -49,7 +49,9 @@ import java.util.List; */ final class KeyboardAccessibilityNodeProvider extends AccessibilityNodeProviderCompat { private static final String TAG = KeyboardAccessibilityNodeProvider.class.getSimpleName(); - private static final int UNDEFINED = Integer.MIN_VALUE; + + // From {@link android.view.accessibility.AccessibilityNodeInfo#UNDEFINED_ITEM_ID}. + private static final int UNDEFINED = Integer.MAX_VALUE; private final KeyCodeDescriptionMapper mKeyCodeDescriptionMapper; private final AccessibilityUtils mAccessibilityUtils; @@ -167,22 +169,10 @@ final class KeyboardAccessibilityNodeProvider extends AccessibilityNodeProviderC } if (virtualViewId == View.NO_ID) { // We are requested to create an AccessibilityNodeInfo describing - // this View, i.e. the root of the virtual sub-tree. + // this View. Returning an empty info is sufficient for a keyboard. final AccessibilityNodeInfoCompat rootInfo = AccessibilityNodeInfoCompat.obtain(mKeyboardView); ViewCompat.onInitializeAccessibilityNodeInfo(mKeyboardView, rootInfo); - - // Add the virtual children of the root View. - final List<Key> sortedKeys = mKeyboard.getSortedKeys(); - final int size = sortedKeys.size(); - for (int index = 0; index < size; index++) { - final Key key = sortedKeys.get(index); - if (key.isSpacer()) { - continue; - } - // Use an index of the sorted keys list as a virtual view id. - rootInfo.addChild(mKeyboardView, index); - } return rootInfo; } diff --git a/java/src/com/android/inputmethod/accessibility/MoreKeysKeyboardAccessibilityDelegate.java b/java/src/com/android/inputmethod/accessibility/MoreKeysKeyboardAccessibilityDelegate.java index 3a56c5d2a..6fe8bc3b9 100644 --- a/java/src/com/android/inputmethod/accessibility/MoreKeysKeyboardAccessibilityDelegate.java +++ b/java/src/com/android/inputmethod/accessibility/MoreKeysKeyboardAccessibilityDelegate.java @@ -23,7 +23,7 @@ import android.view.MotionEvent; import com.android.inputmethod.keyboard.Key; import com.android.inputmethod.keyboard.KeyDetector; import com.android.inputmethod.keyboard.MoreKeysKeyboardView; -import com.android.inputmethod.latin.Constants; +import com.android.inputmethod.keyboard.PointerTracker; /** * This class represents a delegate that can be registered in {@link MoreKeysKeyboardView} to @@ -103,12 +103,15 @@ public class MoreKeysKeyboardAccessibilityDelegate // Invoke {@link MoreKeysKeyboardView#onUpEvent(int,int,int,long)} as if this hover // exit event selects a key. mKeyboardView.onUpEvent(x, y, pointerId, eventTime); - mKeyboardView.dismissMoreKeysPanel(); + // TODO: Should fix this reference. This is a hack to clear the state of + // {@link PointerTracker}. + PointerTracker.dismissAllMoreKeysPanels(); return; } // Close the more keys keyboard. - mKeyboardView.onMoveEvent( - Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE, pointerId, eventTime); + // TODO: Should fix this reference. This is a hack to clear the state of + // {@link PointerTracker}. + PointerTracker.dismissAllMoreKeysPanels(); sendWindowStateChanged(mCloseAnnounceResId); } } diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java index 0f575d30c..68a11398c 100644 --- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java @@ -35,7 +35,7 @@ import com.android.inputmethod.latin.utils.CoordinateUtils; public class MoreKeysKeyboardView extends KeyboardView implements MoreKeysPanel { private final int[] mCoordinates = CoordinateUtils.newInstance(); - protected KeyDetector mKeyDetector; + protected final KeyDetector mKeyDetector; private Controller mController = EMPTY_CONTROLLER; protected KeyboardActionListener mListener; private int mOriginX; @@ -72,13 +72,10 @@ public class MoreKeysKeyboardView extends KeyboardView implements MoreKeysPanel @Override public void setKeyboard(final Keyboard keyboard) { super.setKeyboard(keyboard); + mKeyDetector.setKeyboard( + keyboard, -getPaddingLeft(), -getPaddingTop() + getVerticalCorrection()); if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) { - // With accessibility mode on, any hover event outside {@link MoreKeysKeyboardView} is - // discarded at {@link InputView#dispatchHoverEvent(MotionEvent)}. Because only a hover - // event that is on this view is dispatched by the platform, we should use a - // {@link KeyDetector} that has no sliding allowance and no hysteresis. if (mAccessibilityDelegate == null) { - mKeyDetector = new KeyDetector(); mAccessibilityDelegate = new MoreKeysKeyboardAccessibilityDelegate( this, mKeyDetector); mAccessibilityDelegate.setOpenAnnounce(R.string.spoken_open_more_keys_keyboard); @@ -86,12 +83,8 @@ public class MoreKeysKeyboardView extends KeyboardView implements MoreKeysPanel } mAccessibilityDelegate.setKeyboard(keyboard); } else { - mKeyDetector = new MoreKeysDetector(getResources().getDimension( - R.dimen.config_more_keys_keyboard_slide_allowance)); mAccessibilityDelegate = null; } - mKeyDetector.setKeyboard( - keyboard, -getPaddingLeft(), -getPaddingTop() + getVerticalCorrection()); } @Override diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java index 80ba60c82..a34dbef4b 100644 --- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java @@ -55,7 +55,22 @@ final class EmojiPageKeyboardView extends KeyboardView implements private OnKeyEventListener mListener = EMPTY_LISTENER; private final KeyDetector mKeyDetector = new KeyDetector(); private final GestureDetector mGestureDetector; - private KeyboardAccessibilityDelegate<EmojiPageKeyboardView> mAccessibilityDelegate; + private EmojiPageKeyboardAccessibilityDelegate mAccessibilityDelegate; + + private static final class EmojiPageKeyboardAccessibilityDelegate + extends KeyboardAccessibilityDelegate<EmojiPageKeyboardView> { + public EmojiPageKeyboardAccessibilityDelegate(final EmojiPageKeyboardView keyboardView, + final KeyDetector keyDetector) { + super(keyboardView, keyDetector); + } + + @Override + protected void simulateTouchEvent(int touchAction, MotionEvent hoverEvent) { + final MotionEvent touchEvent = synthesizeTouchEvent(touchAction, hoverEvent); + mKeyboardView.onTouchEvent(touchEvent); + touchEvent.recycle(); + } + } public EmojiPageKeyboardView(final Context context, final AttributeSet attrs) { this(context, attrs, R.attr.keyboardViewStyle); @@ -82,7 +97,8 @@ final class EmojiPageKeyboardView extends KeyboardView implements mKeyDetector.setKeyboard(keyboard, 0 /* correctionX */, 0 /* correctionY */); if (AccessibilityUtils.getInstance().isAccessibilityEnabled()) { if (mAccessibilityDelegate == null) { - mAccessibilityDelegate = new KeyboardAccessibilityDelegate<>(this, mKeyDetector); + mAccessibilityDelegate = new EmojiPageKeyboardAccessibilityDelegate( + this, mKeyDetector); } mAccessibilityDelegate.setKeyboard(keyboard); } else { diff --git a/java/src/com/android/inputmethod/latin/Constants.java b/java/src/com/android/inputmethod/latin/Constants.java index fa51436de..f9339361a 100644 --- a/java/src/com/android/inputmethod/latin/Constants.java +++ b/java/src/com/android/inputmethod/latin/Constants.java @@ -263,10 +263,10 @@ public final class Constants { case CODE_ENTER: return "enter"; case CODE_SPACE: return "space"; default: - if (code < CODE_SPACE) return String.format("\\u%02x", code); + if (code < CODE_SPACE) return String.format("\\u%02X", code); if (code < 0x100) return String.format("%c", code); - if (code < 0x10000) return String.format("\\u04x", code); - return String.format("\\U%05x", code); + if (code < 0x10000) return String.format("\\u%04X", code); + return String.format("\\U%05X", code); } } diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 8b671a94b..b0774c49d 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -70,7 +70,7 @@ import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.define.ProductionFlag; import com.android.inputmethod.latin.inputlogic.InputLogic; import com.android.inputmethod.latin.personalization.DictionaryDecayBroadcastReciever; -import com.android.inputmethod.latin.personalization.PersonalizationDictionarySessionRegistrar; +import com.android.inputmethod.latin.personalization.PersonalizationDictionaryUpdater; import com.android.inputmethod.latin.personalization.PersonalizationHelper; import com.android.inputmethod.latin.settings.Settings; import com.android.inputmethod.latin.settings.SettingsActivity; @@ -122,6 +122,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen private final Settings mSettings; private final DictionaryFacilitator mDictionaryFacilitator = new DictionaryFacilitator(new DistracterFilterCheckingExactMatches(this /* context */)); + // TODO: Move from LatinIME. + private final PersonalizationDictionaryUpdater mPersonalizationDictionaryUpdater = + new PersonalizationDictionaryUpdater(this /* context */, mDictionaryFacilitator); private final InputLogic mInputLogic = new InputLogic(this /* LatinIME */, this /* SuggestionStripViewAccessor */, mDictionaryFacilitator); // We expect to have only one decoder in almost all cases, hence the default capacity of 1. @@ -540,34 +543,26 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen } mDictionaryFacilitator.updateEnabledSubtypes(mRichImm.getMyEnabledInputMethodSubtypeList( true /* allowsImplicitlySelectedSubtypes */)); - refreshPersonalizationDictionarySession(); + refreshPersonalizationDictionarySession(currentSettingsValues); StatsUtils.onLoadSettings(currentSettingsValues); } - private void refreshPersonalizationDictionarySession() { + private void refreshPersonalizationDictionarySession( + final SettingsValues currentSettingsValues) { + mPersonalizationDictionaryUpdater.onLoadSettings( + currentSettingsValues.mUsePersonalizedDicts, + mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes()); final boolean shouldKeepUserHistoryDictionaries; - final boolean shouldKeepPersonalizationDictionaries; if (mSettings.getCurrent().mUsePersonalizedDicts) { shouldKeepUserHistoryDictionaries = true; - // TODO: Eliminate this restriction - shouldKeepPersonalizationDictionaries = - mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes(); } else { shouldKeepUserHistoryDictionaries = false; - shouldKeepPersonalizationDictionaries = false; } if (!shouldKeepUserHistoryDictionaries) { // Remove user history dictionaries. PersonalizationHelper.removeAllUserHistoryDictionaries(this); mDictionaryFacilitator.clearUserHistoryDictionary(); } - if (!shouldKeepPersonalizationDictionaries) { - // Remove personalization dictionaries. - PersonalizationHelper.removeAllPersonalizationDictionaries(this); - PersonalizationDictionarySessionRegistrar.resetAll(this); - } else { - PersonalizationDictionarySessionRegistrar.init(this, mDictionaryFacilitator); - } } // Note that this method is called from a non-UI thread. @@ -627,11 +622,11 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen @Override public void onDestroy() { mDictionaryFacilitator.closeDictionaries(); + mPersonalizationDictionaryUpdater.onDestroy(); mSettings.onDestroy(); unregisterReceiver(mConnectivityAndRingerModeChangeReceiver); unregisterReceiver(mDictionaryPackInstallReceiver); unregisterReceiver(mDictionaryDumpBroadcastReceiver); - PersonalizationDictionarySessionRegistrar.close(this); StatsUtils.onDestroy(); super.onDestroy(); } @@ -660,8 +655,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen mInputLogic.mConnection.endBatchEdit(); } } - PersonalizationDictionarySessionRegistrar.onConfigurationChanged(this, conf, - mDictionaryFacilitator); + // TODO: Remove this test. + if (!conf.locale.equals(mPersonalizationDictionaryUpdater.getLocale())) { + refreshPersonalizationDictionarySession(settingsValues); + } super.onConfigurationChanged(conf); } diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionarySessionRegistrar.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdater.java index 450644032..07bcf98cb 100644 --- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionarySessionRegistrar.java +++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdater.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 The Android Open Source Project + * 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. @@ -16,29 +16,28 @@ package com.android.inputmethod.latin.personalization; +import java.util.Locale; + import android.content.Context; -import android.content.res.Configuration; import com.android.inputmethod.latin.DictionaryFacilitator; -public class PersonalizationDictionarySessionRegistrar { - public static void init(final Context context, - final DictionaryFacilitator dictionaryFacilitator) { - } - - public static void onConfigurationChanged(final Context context, final Configuration conf, +public class PersonalizationDictionaryUpdater { + public PersonalizationDictionaryUpdater(final Context context, final DictionaryFacilitator dictionaryFacilitator) { + // Clear and never update the personalization dictionary. + PersonalizationHelper.removeAllPersonalizationDictionaries(context); + dictionaryFacilitator.clearPersonalizationDictionary(); } - public static void onUpdateData(final Context context, final String type) { - } - - public static void onRemoveData(final Context context, final String type) { + public Locale getLocale() { + return null; } - public static void resetAll(final Context context) { + public void onLoadSettings(final boolean usePersonalizedDicts, + final boolean isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes) { } - public static void close(final Context context) { + public void onDestroy() { } } |