Merge remote-tracking branch 'goog/master' into mergescriptpackage
commit
2e49ed9c67
|
@ -36,6 +36,7 @@ import com.android.inputmethod.keyboard.Key;
|
|||
import com.android.inputmethod.keyboard.Keyboard;
|
||||
import com.android.inputmethod.keyboard.KeyboardView;
|
||||
import com.android.inputmethod.latin.CollectionUtils;
|
||||
import com.android.inputmethod.latin.CoordinateUtils;
|
||||
|
||||
/**
|
||||
* Exposes a virtual view sub-tree for {@link KeyboardView} and generates
|
||||
|
@ -62,7 +63,7 @@ public final class AccessibilityEntityProvider extends AccessibilityNodeProvider
|
|||
private final Rect mTempBoundsInScreen = new Rect();
|
||||
|
||||
/** The parent view's cached on-screen location. */
|
||||
private final int[] mParentLocation = new int[2];
|
||||
private final int[] mParentLocation = CoordinateUtils.newInstance();
|
||||
|
||||
/** The virtual view identifier for the focused node. */
|
||||
private int mAccessibilityFocusedView = UNDEFINED;
|
||||
|
@ -180,7 +181,8 @@ public final class AccessibilityEntityProvider extends AccessibilityNodeProvider
|
|||
|
||||
// Calculate the key's in-screen bounds.
|
||||
mTempBoundsInScreen.set(boundsInParent);
|
||||
mTempBoundsInScreen.offset(mParentLocation[0], mParentLocation[1]);
|
||||
mTempBoundsInScreen.offset(
|
||||
CoordinateUtils.x(mParentLocation), CoordinateUtils.y(mParentLocation));
|
||||
|
||||
final Rect boundsInScreen = mTempBoundsInScreen;
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@ import com.android.inputmethod.keyboard.internal.KeyVisualAttributes;
|
|||
import com.android.inputmethod.keyboard.internal.PreviewPlacerView;
|
||||
import com.android.inputmethod.latin.CollectionUtils;
|
||||
import com.android.inputmethod.latin.Constants;
|
||||
import com.android.inputmethod.latin.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.LatinImeLogger;
|
||||
import com.android.inputmethod.latin.R;
|
||||
import com.android.inputmethod.latin.StaticInnerHandlerWrapper;
|
||||
|
@ -134,7 +135,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
|||
|
||||
// Preview placer view
|
||||
private final PreviewPlacerView mPreviewPlacerView;
|
||||
private final int[] mCoordinates = new int[2];
|
||||
private final int[] mCoordinates = CoordinateUtils.newInstance();
|
||||
|
||||
// Key preview
|
||||
private static final int PREVIEW_ALPHA = 240;
|
||||
|
@ -832,10 +833,10 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
|||
// In transient state.
|
||||
return;
|
||||
}
|
||||
final int[] viewOrigin = new int[2];
|
||||
final int[] viewOrigin = CoordinateUtils.newInstance();
|
||||
getLocationInWindow(viewOrigin);
|
||||
final DisplayMetrics dm = getResources().getDisplayMetrics();
|
||||
if (viewOrigin[1] < dm.heightPixels / 4) {
|
||||
if (CoordinateUtils.y(viewOrigin) < dm.heightPixels / 4) {
|
||||
// In transient state.
|
||||
return;
|
||||
}
|
||||
|
@ -850,7 +851,8 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
|||
Log.w(TAG, "Cannot find android.R.id.content view to add PreviewPlacerView");
|
||||
} else {
|
||||
windowContentView.addView(mPreviewPlacerView);
|
||||
mPreviewPlacerView.setKeyboardViewGeometry(viewOrigin[0], viewOrigin[1], width, height);
|
||||
mPreviewPlacerView.setKeyboardViewGeometry(
|
||||
CoordinateUtils.x(viewOrigin), CoordinateUtils.y(viewOrigin), width, height);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -940,7 +942,8 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
|||
// parent key. If it doesn't fit in this {@link KeyboardView}, it is moved inward to fit and
|
||||
// the left/right background is used if such background is specified.
|
||||
final int statePosition;
|
||||
int previewX = key.getDrawX() - (previewWidth - keyDrawWidth) / 2 + mCoordinates[0];
|
||||
int previewX = key.getDrawX() - (previewWidth - keyDrawWidth) / 2
|
||||
+ CoordinateUtils.x(mCoordinates);
|
||||
if (previewX < 0) {
|
||||
previewX = 0;
|
||||
statePosition = STATE_LEFT;
|
||||
|
@ -952,7 +955,8 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
|
|||
}
|
||||
// The key preview is placed vertically above the top edge of the parent key with an
|
||||
// arbitrary offset.
|
||||
final int previewY = key.mY - previewHeight + mPreviewOffset + mCoordinates[1];
|
||||
final int previewY = key.mY - previewHeight + mPreviewOffset
|
||||
+ CoordinateUtils.y(mCoordinates);
|
||||
|
||||
if (background != null) {
|
||||
final int hasMoreKeys = (key.mMoreKeys != null) ? STATE_HAS_MOREKEYS : STATE_NORMAL;
|
||||
|
|
|
@ -369,13 +369,13 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
|
|||
}
|
||||
|
||||
@Override
|
||||
public void cancelAllUpdateBatchInputTimer() {
|
||||
public void cancelAllUpdateBatchInputTimers() {
|
||||
removeMessages(MSG_UPDATE_BATCH_INPUT);
|
||||
}
|
||||
|
||||
public void cancelAllMessages() {
|
||||
cancelKeyTimers();
|
||||
cancelAllUpdateBatchInputTimer();
|
||||
cancelAllUpdateBatchInputTimers();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@ import android.widget.PopupWindow;
|
|||
import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
|
||||
import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
|
||||
import com.android.inputmethod.latin.Constants;
|
||||
import com.android.inputmethod.latin.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.InputPointers;
|
||||
import com.android.inputmethod.latin.R;
|
||||
|
||||
|
@ -34,7 +35,7 @@ import com.android.inputmethod.latin.R;
|
|||
* detecting key presses and touch movements.
|
||||
*/
|
||||
public final class MoreKeysKeyboardView extends KeyboardView implements MoreKeysPanel {
|
||||
private final int[] mCoordinates = new int[2];
|
||||
private final int[] mCoordinates = CoordinateUtils.newInstance();
|
||||
|
||||
private final KeyDetector mKeyDetector;
|
||||
|
||||
|
@ -169,7 +170,7 @@ public final class MoreKeysKeyboardView extends KeyboardView implements MoreKeys
|
|||
window.setHeight(container.getMeasuredHeight());
|
||||
parentView.getLocationInWindow(mCoordinates);
|
||||
window.showAtLocation(parentView, Gravity.NO_GRAVITY,
|
||||
x + mCoordinates[0], y + mCoordinates[1]);
|
||||
x + CoordinateUtils.x(mCoordinates), y + CoordinateUtils.y(mCoordinates));
|
||||
|
||||
mOriginX = x + container.getPaddingLeft();
|
||||
mOriginY = y + container.getPaddingTop();
|
||||
|
|
|
@ -95,7 +95,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
public boolean isInDoubleTapTimeout();
|
||||
public void cancelKeyTimers();
|
||||
public void startUpdateBatchInputTimer(PointerTracker tracker);
|
||||
public void cancelAllUpdateBatchInputTimer();
|
||||
public void cancelAllUpdateBatchInputTimers();
|
||||
|
||||
public static class Adapter implements TimerProxy {
|
||||
@Override
|
||||
|
@ -121,7 +121,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
@Override
|
||||
public void startUpdateBatchInputTimer(PointerTracker tracker) {}
|
||||
@Override
|
||||
public void cancelAllUpdateBatchInputTimer() {}
|
||||
public void cancelAllUpdateBatchInputTimers() {}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -754,7 +754,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
|
|||
Log.d(TAG, String.format("[%d] onEndBatchInput : batchPoints=%d",
|
||||
mPointerId, sAggregratedPointers.getPointerSize()));
|
||||
}
|
||||
mTimerProxy.cancelAllUpdateBatchInputTimer();
|
||||
mTimerProxy.cancelAllUpdateBatchInputTimers();
|
||||
mListener.onEndBatchInput(sAggregratedPointers);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -386,12 +386,11 @@ public final class AdditionalSubtypeSettings extends PreferenceFragment {
|
|||
public void onCreate(final Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
RichInputMethodManager.init(getActivity());
|
||||
mPrefs = getPreferenceManager().getSharedPreferences();
|
||||
RichInputMethodManager.init(getActivity(), mPrefs);
|
||||
mRichImm = RichInputMethodManager.getInstance();
|
||||
addPreferencesFromResource(R.xml.additional_subtype_settings);
|
||||
setHasOptionsMenu(true);
|
||||
|
||||
mPrefs = getPreferenceManager().getSharedPreferences();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Copyright (C) 2012 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.latin;
|
||||
|
||||
public final class CoordinateUtils {
|
||||
private static final int INDEX_X = 0;
|
||||
private static final int INDEX_Y = 1;
|
||||
private static final int ARRAY_SIZE = INDEX_Y + 1;
|
||||
|
||||
private CoordinateUtils() {
|
||||
// This utility class is not publicly instantiable.
|
||||
}
|
||||
|
||||
public static int[] newInstance() {
|
||||
return new int[ARRAY_SIZE];
|
||||
}
|
||||
|
||||
public static int x(final int[] coords) {
|
||||
return coords[INDEX_X];
|
||||
}
|
||||
|
||||
public static int y(final int[] coords) {
|
||||
return coords[INDEX_Y];
|
||||
}
|
||||
}
|
|
@ -403,33 +403,28 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
|
|||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
mPrefs = prefs;
|
||||
LatinImeLogger.init(this, prefs);
|
||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
mResources = getResources();
|
||||
|
||||
LatinImeLogger.init(this, mPrefs);
|
||||
if (ProductionFlag.IS_EXPERIMENTAL) {
|
||||
ResearchLogger.getInstance().init(this, prefs);
|
||||
ResearchLogger.getInstance().init(this, mPrefs);
|
||||
}
|
||||
RichInputMethodManager.init(this);
|
||||
RichInputMethodManager.init(this, mPrefs);
|
||||
mRichImm = RichInputMethodManager.getInstance();
|
||||
SubtypeSwitcher.init(this);
|
||||
KeyboardSwitcher.init(this, prefs);
|
||||
KeyboardSwitcher.init(this, mPrefs);
|
||||
AccessibilityUtils.init(this);
|
||||
|
||||
super.onCreate();
|
||||
|
||||
mRichImm = RichInputMethodManager.getInstance();
|
||||
mHandler.onCreate();
|
||||
DEBUG = LatinImeLogger.sDBG;
|
||||
|
||||
final Resources res = getResources();
|
||||
mResources = res;
|
||||
|
||||
loadSettings();
|
||||
|
||||
mRichImm.setAdditionalInputMethodSubtypes(mCurrentSettings.getAdditionalSubtypes());
|
||||
|
||||
initSuggest();
|
||||
|
||||
mDisplayOrientation = res.getConfiguration().orientation;
|
||||
mDisplayOrientation = mResources.getConfiguration().orientation;
|
||||
|
||||
// Register to receive ringer mode change and network state change.
|
||||
// Also receive installation and removal of a dictionary pack.
|
||||
|
|
|
@ -19,6 +19,7 @@ package com.android.inputmethod.latin;
|
|||
import static com.android.inputmethod.latin.Constants.Subtype.KEYBOARD_MODE;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.IBinder;
|
||||
import android.view.inputmethod.InputMethodInfo;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
|
@ -49,19 +50,34 @@ public final class RichInputMethodManager {
|
|||
return sInstance;
|
||||
}
|
||||
|
||||
public static void init(final Context context) {
|
||||
sInstance.initInternal(context);
|
||||
public static void init(final Context context, final SharedPreferences prefs) {
|
||||
sInstance.initInternal(context, prefs);
|
||||
}
|
||||
|
||||
private boolean isInitialized() {
|
||||
return mImmWrapper != null;
|
||||
}
|
||||
|
||||
private void checkInitialized() {
|
||||
if (mImmWrapper == null) {
|
||||
if (!isInitialized()) {
|
||||
throw new RuntimeException(TAG + " is used before initialization");
|
||||
}
|
||||
}
|
||||
|
||||
private void initInternal(final Context context) {
|
||||
private void initInternal(final Context context, final SharedPreferences prefs) {
|
||||
if (isInitialized()) {
|
||||
return;
|
||||
}
|
||||
mImmWrapper = new InputMethodManagerCompatWrapper(context);
|
||||
mInputMethodInfoOfThisIme = getInputMethodInfoOfThisIme(context);
|
||||
|
||||
// Initialize additional subtypes.
|
||||
SubtypeLocale.init(context);
|
||||
final String prefAdditionalSubtypes = SettingsValues.getPrefAdditionalSubtypes(
|
||||
prefs, context.getResources());
|
||||
final InputMethodSubtype[] additionalSubtypes =
|
||||
AdditionalSubtype.createAdditionalSubtypesArray(prefAdditionalSubtypes);
|
||||
setAdditionalInputMethodSubtypes(additionalSubtypes);
|
||||
}
|
||||
|
||||
public InputMethodManager getInputMethodManager() {
|
||||
|
|
|
@ -22,7 +22,6 @@ import android.content.res.Configuration;
|
|||
import android.content.res.Resources;
|
||||
import android.util.Log;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.view.inputmethod.InputMethodSubtype;
|
||||
|
||||
import com.android.inputmethod.keyboard.internal.KeySpecParser;
|
||||
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||
|
@ -82,7 +81,6 @@ public final class SettingsValues {
|
|||
private final int mVibrationDurationSettingsRawValue;
|
||||
@SuppressWarnings("unused") // TODO: Use this
|
||||
private final float mKeypressSoundVolumeRawValue;
|
||||
private final InputMethodSubtype[] mAdditionalSubtypes;
|
||||
public final boolean mGestureInputEnabled;
|
||||
public final boolean mGesturePreviewTrailEnabled;
|
||||
public final boolean mGestureFloatingPreviewTextEnabled;
|
||||
|
@ -170,8 +168,6 @@ public final class SettingsValues {
|
|||
mAutoCorrectionThresholdRawValue);
|
||||
mVoiceKeyEnabled = mVoiceMode != null && !mVoiceMode.equals(voiceModeOff);
|
||||
mVoiceKeyOnMain = mVoiceMode != null && mVoiceMode.equals(voiceModeMain);
|
||||
mAdditionalSubtypes = AdditionalSubtype.createAdditionalSubtypesArray(
|
||||
getPrefAdditionalSubtypes(prefs, res));
|
||||
final boolean gestureInputEnabledByBuildConfig = res.getBoolean(
|
||||
R.bool.config_gesture_input_enabled_by_build_config);
|
||||
mGestureInputEnabled = gestureInputEnabledByBuildConfig
|
||||
|
@ -375,10 +371,6 @@ public final class SettingsValues {
|
|||
return res.getBoolean(R.bool.config_use_fullscreen_mode);
|
||||
}
|
||||
|
||||
public InputMethodSubtype[] getAdditionalSubtypes() {
|
||||
return mAdditionalSubtypes;
|
||||
}
|
||||
|
||||
public static String getPrefAdditionalSubtypes(final SharedPreferences prefs,
|
||||
final Resources res) {
|
||||
final String predefinedPrefSubtypes = AdditionalSubtype.createPrefSubtypes(
|
||||
|
|
|
@ -34,6 +34,7 @@ import com.android.inputmethod.keyboard.PointerTracker;
|
|||
import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
|
||||
import com.android.inputmethod.keyboard.PointerTracker.KeyEventHandler;
|
||||
import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
|
||||
import com.android.inputmethod.latin.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.R;
|
||||
|
||||
/**
|
||||
|
@ -41,7 +42,7 @@ import com.android.inputmethod.latin.R;
|
|||
* key presses and touch movements.
|
||||
*/
|
||||
public final class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
|
||||
private final int[] mCoordinates = new int[2];
|
||||
private final int[] mCoordinates = CoordinateUtils.newInstance();
|
||||
|
||||
final KeyDetector mModalPanelKeyDetector;
|
||||
private final KeyDetector mSlidingPanelKeyDetector;
|
||||
|
@ -163,7 +164,7 @@ public final class MoreSuggestionsView extends KeyboardView implements MoreKeysP
|
|||
window.setHeight(container.getMeasuredHeight());
|
||||
parentView.getLocationInWindow(mCoordinates);
|
||||
window.showAtLocation(parentView, Gravity.NO_GRAVITY,
|
||||
x + mCoordinates[0], y + mCoordinates[1]);
|
||||
x + CoordinateUtils.x(mCoordinates), y + CoordinateUtils.y(mCoordinates));
|
||||
|
||||
mOriginX = x + container.getPaddingLeft();
|
||||
mOriginY = y + container.getPaddingTop();
|
||||
|
|
|
@ -18,6 +18,7 @@ package com.android.inputmethod.keyboard;
|
|||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.test.AndroidTestCase;
|
||||
import android.view.inputmethod.InputMethodSubtype;
|
||||
|
||||
|
@ -41,7 +42,8 @@ public class SpacebarTextTests extends AndroidTestCase {
|
|||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
final Context context = getContext();
|
||||
RichInputMethodManager.init(context);
|
||||
RichInputMethodManager.init(
|
||||
context, PreferenceManager.getDefaultSharedPreferences(context));
|
||||
mRichImm = RichInputMethodManager.getInstance();
|
||||
mRes = context.getResources();
|
||||
SubtypeLocale.init(context);
|
||||
|
|
|
@ -18,6 +18,7 @@ package com.android.inputmethod.latin;
|
|||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.test.AndroidTestCase;
|
||||
import android.view.inputmethod.InputMethodSubtype;
|
||||
|
||||
|
@ -37,7 +38,8 @@ public class SubtypeLocaleTests extends AndroidTestCase {
|
|||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
final Context context = getContext();
|
||||
RichInputMethodManager.init(context);
|
||||
RichInputMethodManager.init(
|
||||
context, PreferenceManager.getDefaultSharedPreferences(context));
|
||||
mRichImm = RichInputMethodManager.getInstance();
|
||||
mRes = context.getResources();
|
||||
SubtypeLocale.init(context);
|
||||
|
|
Loading…
Reference in New Issue