aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod/latin')
-rw-r--r--java/src/com/android/inputmethod/latin/AdditionalSubtypeSettings.java5
-rw-r--r--java/src/com/android/inputmethod/latin/CoordinateUtils.java39
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java23
-rw-r--r--java/src/com/android/inputmethod/latin/RichInputMethodManager.java24
-rw-r--r--java/src/com/android/inputmethod/latin/SettingsValues.java8
-rw-r--r--java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java5
6 files changed, 73 insertions, 31 deletions
diff --git a/java/src/com/android/inputmethod/latin/AdditionalSubtypeSettings.java b/java/src/com/android/inputmethod/latin/AdditionalSubtypeSettings.java
index 96c08b3cd..08f08d24e 100644
--- a/java/src/com/android/inputmethod/latin/AdditionalSubtypeSettings.java
+++ b/java/src/com/android/inputmethod/latin/AdditionalSubtypeSettings.java
@@ -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
diff --git a/java/src/com/android/inputmethod/latin/CoordinateUtils.java b/java/src/com/android/inputmethod/latin/CoordinateUtils.java
new file mode 100644
index 000000000..cd3177299
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/CoordinateUtils.java
@@ -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];
+ }
+}
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index dc3ad4ff0..0b49659e3 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -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.
diff --git a/java/src/com/android/inputmethod/latin/RichInputMethodManager.java b/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
index 63dfd3250..af0d61cc7 100644
--- a/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
+++ b/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
@@ -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() {
diff --git a/java/src/com/android/inputmethod/latin/SettingsValues.java b/java/src/com/android/inputmethod/latin/SettingsValues.java
index d6daa0d26..8de64c1c9 100644
--- a/java/src/com/android/inputmethod/latin/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/SettingsValues.java
@@ -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(
diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
index 6cdd9e2cd..8cc09f39b 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
@@ -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();