aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/values/config-common.xml2
-rw-r--r--java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java18
-rw-r--r--java/src/com/android/inputmethod/accessibility/MoreKeysKeyboardAccessibilityDelegate.java11
-rw-r--r--java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java13
-rw-r--r--java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java20
-rw-r--r--java/src/com/android/inputmethod/latin/Constants.java6
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java33
-rw-r--r--java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdater.java (renamed from java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionarySessionRegistrar.java)27
8 files changed, 64 insertions, 66 deletions
diff --git a/java/res/values/config-common.xml b/java/res/values/config-common.xml
index 58f3e9827..063fbfb37 100644
--- a/java/res/values/config-common.xml
+++ b/java/res/values/config-common.xml
@@ -48,7 +48,7 @@
<integer name="config_max_longpress_timeout">700</integer>
<integer name="config_min_longpress_timeout">100</integer>
<integer name="config_longpress_timeout_step">10</integer>
- <integer name="config_accessibility_long_press_key_timeout">1500</integer>
+ <integer name="config_accessibility_long_press_key_timeout">3000</integer>
<integer name="config_max_more_keys_column">5</integer>
<integer name="config_more_keys_keyboard_fadein_anim_time">0</integer>
<integer name="config_more_keys_keyboard_fadeout_anim_time">100</integer>
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() {
}
}