From 62b8dddb6ddb057555a1665759f9cf197e480c9f Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Fri, 20 Jul 2012 17:49:06 +0900 Subject: [PATCH] Add gesture input enable settings Bug: 6845325 Change-Id: I3165465b0b280e32a9288da16abb75baa67288dc --- java/res/values/strings.xml | 5 +++++ java/res/xml/prefs.xml | 6 ++++++ .../inputmethod/keyboard/KeyboardSwitcher.java | 5 ++++- .../inputmethod/keyboard/KeyboardView.java | 7 +++++++ .../inputmethod/keyboard/LatinKeyboardView.java | 7 ++----- .../inputmethod/keyboard/PointerTracker.java | 16 +++++++--------- .../com/android/inputmethod/latin/Settings.java | 7 +++++++ .../inputmethod/latin/SettingsValues.java | 5 +++++ 8 files changed, 43 insertions(+), 15 deletions(-) diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index cf7c1c5bd..98c891894 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -111,6 +111,11 @@ Based on previous word + + Gesture input + + Input a word by tracing the letters of a word + %s : Saved diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml index bf8805875..4f11cb7e5 100644 --- a/java/res/xml/prefs.xml +++ b/java/res/xml/prefs.xml @@ -86,6 +86,12 @@ android:summary="@string/bigram_prediction_summary" android:persistent="true" android:defaultValue="true" /> + sTrackers = new ArrayList(); private static final InputPointers sAggregratedPointers = new InputPointers( @@ -191,18 +190,16 @@ public class PointerTracker { private final GestureStroke mGestureStroke; public static void init(boolean hasDistinctMultitouch, - boolean needsPhantomSuddenMoveEventHack, - boolean gestureInputEnabledByBuildConfig) { + boolean needsPhantomSuddenMoveEventHack) { if (hasDistinctMultitouch) { sPointerTrackerQueue = new PointerTrackerQueue(); } else { sPointerTrackerQueue = null; } sNeedsPhantomSuddenMoveEventHack = needsPhantomSuddenMoveEventHack; - sConfigGestureInputEnabledByBuildConfig = gestureInputEnabledByBuildConfig; setParameters(LatinKeyboardView.PointerTrackerParams.DEFAULT); - updateGestureInputEnabledState(null); + updateGestureInputEnabledState(null, false /* gestureInputEnabled */); } public static void setParameters(LatinKeyboardView.PointerTrackerParams params) { @@ -211,8 +208,9 @@ public class PointerTracker { params.mTouchNoiseThresholdDistance * params.mTouchNoiseThresholdDistance); } - private static void updateGestureInputEnabledState(Keyboard keyboard) { - if (!sConfigGestureInputEnabledByBuildConfig + private static void updateGestureInputEnabledState(Keyboard keyboard, + boolean gestureInputEnabled) { + if (!gestureInputEnabled || AccessibilityUtils.getInstance().isTouchExplorationEnabled() || (keyboard != null && keyboard.mId.passwordInput())) { sIsGestureEnabled = false; @@ -245,7 +243,7 @@ public class PointerTracker { } } - public static void setKeyDetector(KeyDetector keyDetector) { + public static void setKeyDetector(KeyDetector keyDetector, boolean gestureInputEnabledByUser) { final int trackersSize = sTrackers.size(); for (int i = 0; i < trackersSize; ++i) { final PointerTracker tracker = sTrackers.get(i); @@ -254,7 +252,7 @@ public class PointerTracker { tracker.mKeyboardLayoutHasBeenChanged = true; } final Keyboard keyboard = keyDetector.getKeyboard(); - updateGestureInputEnabledState(keyboard); + updateGestureInputEnabledState(keyboard, gestureInputEnabledByUser); } public static void dismissAllKeyPreviews() { diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java index a07d286b8..b67cc852e 100644 --- a/java/src/com/android/inputmethod/latin/Settings.java +++ b/java/src/com/android/inputmethod/latin/Settings.java @@ -70,6 +70,7 @@ public class Settings extends InputMethodSettingsFragment "pref_key_preview_popup_dismiss_delay"; public static final String PREF_KEY_USE_CONTACTS_DICT = "pref_key_use_contacts_dict"; public static final String PREF_BIGRAM_PREDICTIONS = "next_word_prediction"; + public static final String PREF_GESTURE_INPUT = "gesture_input"; public static final String PREF_VIBRATION_DURATION_SETTINGS = "pref_vibration_duration_settings"; public static final String PREF_KEYPRESS_SOUND_VOLUME = @@ -196,6 +197,12 @@ public class Settings extends InputMethodSettingsFragment textCorrectionGroup.removePreference(dictionaryLink); } + final boolean gestureInputEnabledByBuildConfig = res.getBoolean( + R.bool.config_gesture_input_enabled_by_build_config); + if (!gestureInputEnabledByBuildConfig) { + final Preference gestureInputPref = findPreference(PREF_GESTURE_INPUT); + miscSettings.removePreference(gestureInputPref); + } final boolean showUsabilityStudyModeOption = res.getBoolean(R.bool.config_enable_usability_study_mode_option) || ProductionFlag.IS_EXPERIMENTAL || ENABLE_EXPERIMENTAL_SETTINGS; diff --git a/java/src/com/android/inputmethod/latin/SettingsValues.java b/java/src/com/android/inputmethod/latin/SettingsValues.java index 10025daf8..3ed981375 100644 --- a/java/src/com/android/inputmethod/latin/SettingsValues.java +++ b/java/src/com/android/inputmethod/latin/SettingsValues.java @@ -83,6 +83,7 @@ public class SettingsValues { @SuppressWarnings("unused") // TODO: Use this private final float mKeypressSoundVolumeRawValue; private final InputMethodSubtype[] mAdditionalSubtypes; + public final boolean mGestureInputEnabled; // From the input box private final InputAttributes mInputAttributes; @@ -169,6 +170,10 @@ public class SettingsValues { 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 + && prefs.getBoolean(Settings.PREF_GESTURE_INPUT, true); mCorrectionEnabled = mAutoCorrectEnabled && !mInputAttributes.mInputTypeNoAutoCorrect; mSuggestionVisibility = createSuggestionVisibility(res); }