diff options
Diffstat (limited to 'java')
-rwxr-xr-x | java/AndroidManifest.xml | 6 | ||||
-rw-r--r-- | java/res/values/strings.xml | 4 | ||||
-rw-r--r-- | java/res/xml/prefs.xml | 16 | ||||
-rw-r--r-- | java/res/xml/prefs_for_debug.xml | 45 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/LatinIME.java | 13 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/LatinIMEDebugSettings.java | 75 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/LatinIMESettings.java | 35 | ||||
-rwxr-xr-x | java/src/com/android/inputmethod/latin/Suggest.java | 12 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/WordComposer.java | 26 |
9 files changed, 165 insertions, 67 deletions
diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml index 642c717d3..b1e5ec6f6 100755 --- a/java/AndroidManifest.xml +++ b/java/AndroidManifest.xml @@ -26,6 +26,12 @@ </intent-filter> </activity> + <activity android:name="LatinIMEDebugSettings" android:label="@string/english_ime_debug_settings"> + <intent-filter> + <action android:name="android.intent.action.MAIN"/> + </intent-filter> + </activity> + <activity android:name="InputLanguageSelection" android:label="@string/language_selection_title"> <intent-filter> diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index 56dceef2d..17921ff33 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -372,4 +372,8 @@ <string name="subtype_mode_keyboard">keyboard</string> <string name="subtype_mode_voice">voice</string> + + <!-- Title for Latin keyboard debug settings activity / dialog --> + <string name="english_ime_debug_settings" translatable="false">Android keyboard Debug settings</string> + <string name="prefs_debug_mode" translatable="false">Debug Mode</string> </resources> diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml index a554ad27b..7bcf19334 100644 --- a/java/res/xml/prefs.xml +++ b/java/res/xml/prefs.xml @@ -51,14 +51,6 @@ android:defaultValue="true" /> - <!-- <CheckBoxPreference - android:key="enable_logging" - android:title="@string/prefs_enable_log" - android:summary="@string/prefs_description_log" - android:persistent="true" - android:defaultValue="false" - />--> - <ListPreference android:key="settings_key" android:title="@string/prefs_settings_key" @@ -77,14 +69,6 @@ android:defaultValue="@string/voice_mode_main" /> - <!-- <ListPreference - android:key="keyboard_layout" - android:title="@string/keyboard_layout" - android:persistent="true" - android:entryValues="@array/keyboard_layout_modes_values" - android:entries="@array/keyboard_layout_modes" - android:defaultValue="4" - />--> <PreferenceScreen android:title="@string/language_selection_title" diff --git a/java/res/xml/prefs_for_debug.xml b/java/res/xml/prefs_for_debug.xml new file mode 100644 index 000000000..8177d3c6a --- /dev/null +++ b/java/res/xml/prefs_for_debug.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2010 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. +--> + +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" + android:title="@string/prefs_debug_mode" + android:key="english_ime_debug_settings"> + + <CheckBoxPreference + android:key="enable_logging" + android:title="@string/prefs_enable_log" + android:summary="@string/prefs_description_log" + android:persistent="true" + android:defaultValue="false" + /> + + <ListPreference + android:key="pref_keyboard_layout_20100902" + android:title="@string/keyboard_layout" + android:persistent="true" + android:entryValues="@array/keyboard_layout_modes_values" + android:entries="@array/keyboard_layout_modes" + android:defaultValue="4" + /> + + <CheckBoxPreference + android:key="debug_mode" + android:title="@string/prefs_debug_mode" + android:persistent="true" + android:defaultValue="false" + /> + +</PreferenceScreen> diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 696f530d3..01f3ba66c 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -40,6 +40,7 @@ import android.os.Debug; import android.os.Handler; import android.os.Message; import android.os.SystemClock; +import android.preference.PreferenceActivity; import android.preference.PreferenceManager; import android.speech.SpeechRecognizer; import android.text.ClipboardManager; @@ -1388,7 +1389,7 @@ public class LatinIME extends InputMethodService if (mKeyboardSwitcher.getInputView().isShifted() && mKeyboardSwitcher.isAlphabetMode() && mComposing.length() == 0) { - mWord.setCapitalized(true); + mWord.setFirstCharCapitalized(true); } mComposing.append((char) primaryCode); mWord.add(primaryCode, keyCodes); @@ -2019,7 +2020,7 @@ public class LatinIME extends InputMethodService touching.word.charAt(i) }); } - foundWord.setCapitalized(Character.isUpperCase(touching.word.charAt(0))); + foundWord.setFirstCharCapitalized(Character.isUpperCase(touching.word.charAt(0))); } // Found a match, show suggestions if (foundWord != null || alternatives != null) { @@ -2176,7 +2177,7 @@ public class LatinIME extends InputMethodService } public boolean preferCapitalization() { - return mWord.isCapitalized(); + return mWord.isFirstCharCapitalized(); } private void toggleLanguage(boolean reset, boolean next) { @@ -2399,7 +2400,11 @@ public class LatinIME extends InputMethodService launchSettings(LatinIMESettings.class); } - protected void launchSettings(Class<LatinIMESettings> settingsClass) { + public void launchDebugSettings() { + launchSettings(LatinIMEDebugSettings.class); + } + + protected void launchSettings (Class<? extends PreferenceActivity> settingsClass) { handleClose(); Intent intent = new Intent(); intent.setClass(LatinIME.this, settingsClass); diff --git a/java/src/com/android/inputmethod/latin/LatinIMEDebugSettings.java b/java/src/com/android/inputmethod/latin/LatinIMEDebugSettings.java new file mode 100644 index 000000000..cba1a0af9 --- /dev/null +++ b/java/src/com/android/inputmethod/latin/LatinIMEDebugSettings.java @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2010 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; + +import android.content.SharedPreferences; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager.NameNotFoundException; +import android.os.Bundle; +import android.preference.CheckBoxPreference; +import android.preference.PreferenceActivity; +import android.util.Log; + +public class LatinIMEDebugSettings extends PreferenceActivity + implements SharedPreferences.OnSharedPreferenceChangeListener { + + private static final String TAG = "LatinIMEDebugSettings"; + private static final String DEBUG_MODE_KEY = "debug_mode"; + + private CheckBoxPreference mDebugMode; + + @Override + protected void onCreate(Bundle icicle) { + super.onCreate(icicle); + addPreferencesFromResource(R.xml.prefs_for_debug); + SharedPreferences prefs = getPreferenceManager().getSharedPreferences(); + prefs.registerOnSharedPreferenceChangeListener(this); + + mDebugMode = (CheckBoxPreference) findPreference(DEBUG_MODE_KEY); + updateDebugMode(); + } + + public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { + if (key.equals(DEBUG_MODE_KEY)) { + if (mDebugMode != null) { + mDebugMode.setChecked(prefs.getBoolean(DEBUG_MODE_KEY, false)); + updateDebugMode(); + } + } + } + + private void updateDebugMode() { + if (mDebugMode == null) { + return; + } + boolean isDebugMode = mDebugMode.isChecked(); + String version = ""; + try { + PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 0); + version = "Version " + info.versionName; + } catch (NameNotFoundException e) { + Log.e(TAG, "Could not find version info."); + } + if (!isDebugMode) { + mDebugMode.setTitle(version); + mDebugMode.setSummary(""); + } else { + mDebugMode.setTitle(getResources().getString(R.string.prefs_debug_mode)); + mDebugMode.setSummary(version); + } + } +} diff --git a/java/src/com/android/inputmethod/latin/LatinIMESettings.java b/java/src/com/android/inputmethod/latin/LatinIMESettings.java index f9534d265..ffff33da2 100644 --- a/java/src/com/android/inputmethod/latin/LatinIMESettings.java +++ b/java/src/com/android/inputmethod/latin/LatinIMESettings.java @@ -24,8 +24,6 @@ import android.app.Dialog; import android.app.backup.BackupManager; import android.content.DialogInterface; import android.content.SharedPreferences; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager.NameNotFoundException; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; @@ -45,7 +43,6 @@ public class LatinIMESettings extends PreferenceActivity private static final String QUICK_FIXES_KEY = "quick_fixes"; private static final String PREDICTION_SETTINGS_KEY = "prediction_settings"; private static final String VOICE_SETTINGS_KEY = "voice_mode"; - private static final String DEBUG_MODE_KEY = "debug_mode"; /* package */ static final String PREF_SETTINGS_KEY = "settings_key"; private static final String TAG = "LatinIMESettings"; @@ -54,7 +51,6 @@ public class LatinIMESettings extends PreferenceActivity private static final int VOICE_INPUT_CONFIRM_DIALOG = 0; private CheckBoxPreference mQuickFixes; - private CheckBoxPreference mDebugMode; private ListPreference mVoicePreference; private ListPreference mSettingsKeyPreference; private boolean mVoiceOn; @@ -77,9 +73,6 @@ public class LatinIMESettings extends PreferenceActivity mVoiceModeOff = getString(R.string.voice_mode_off); mVoiceOn = !(prefs.getString(VOICE_SETTINGS_KEY, mVoiceModeOff).equals(mVoiceModeOff)); mLogger = VoiceInputLogger.getLogger(this); - - mDebugMode = (CheckBoxPreference) findPreference(DEBUG_MODE_KEY); - updateDebugMode(); } @Override @@ -114,11 +107,6 @@ public class LatinIMESettings extends PreferenceActivity .equals(mVoiceModeOff)) { showVoiceConfirmation(); } - } else if (key.equals(DEBUG_MODE_KEY)) { - if (mDebugMode != null) { - mDebugMode.setChecked(prefs.getBoolean(DEBUG_MODE_KEY, false)); - updateDebugMode(); - } } mVoiceOn = !(prefs.getString(VOICE_SETTINGS_KEY, mVoiceModeOff).equals(mVoiceModeOff)); updateVoiceModeSummary(); @@ -131,29 +119,6 @@ public class LatinIMESettings extends PreferenceActivity [mSettingsKeyPreference.findIndexOfValue(mSettingsKeyPreference.getValue())]); } - private void updateDebugMode() { - if (mDebugMode == null) { - return; - } - boolean isDebugMode = mDebugMode.isChecked(); - String version = ""; - try { - PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 0); - version = "Version " + info.versionName; - } catch (NameNotFoundException e) { - Log.e(TAG, "Could not find version info."); - } - if (!isDebugMode) { - mDebugMode.setEnabled(false); - mDebugMode.setTitle(version); - mDebugMode.setSummary(""); - } else { - mDebugMode.setEnabled(true); - mDebugMode.setSummary(version); - mDebugMode.setSummary(""); - } - } - private void showVoiceConfirmation() { mOkClicked = false; showDialog(VOICE_INPUT_CONFIRM_DIALOG); diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java index 92bbe4362..3b898941f 100755 --- a/java/src/com/android/inputmethod/latin/Suggest.java +++ b/java/src/com/android/inputmethod/latin/Suggest.java @@ -96,7 +96,10 @@ public class Suggest implements Dictionary.WordCallback { private boolean mHaveCorrection; private CharSequence mOriginalWord; private String mLowerOriginalWord; - private boolean mCapitalize; + + // TODO: Remove these member variables by passing more context to addWord() callback method + private boolean mIsFirstCharCapitalized; + private boolean mIsAllUpperCase; private int mCorrectionMode = CORRECTION_BASIC; @@ -219,7 +222,8 @@ public class Suggest implements Dictionary.WordCallback { boolean includeTypedWordIfValid, CharSequence prevWordForBigram) { LatinImeLogger.onStartSuggestion(prevWordForBigram); mHaveCorrection = false; - mCapitalize = wordComposer.isCapitalized(); + mIsFirstCharCapitalized = wordComposer.isFirstCharCapitalized(); + mIsAllUpperCase = wordComposer.isAllUpperCase(); collectGarbage(mSuggestions, mPrefMaxSuggestions); Arrays.fill(mPriorities, 0); Arrays.fill(mNextLettersFrequencies, 0); @@ -453,7 +457,9 @@ public class Suggest implements Dictionary.WordCallback { StringBuilder sb = poolSize > 0 ? (StringBuilder) mStringPool.remove(poolSize - 1) : new StringBuilder(getApproxMaxWordLength()); sb.setLength(0); - if (mCapitalize) { + if (mIsAllUpperCase) { + sb.append(new String(word, offset, length).toUpperCase()); + } else if (mIsFirstCharCapitalized) { sb.append(Character.toUpperCase(word[offset])); if (length > 1) { sb.append(word, offset + 1, length - 1); diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java index fe4c68576..2e415b771 100644 --- a/java/src/com/android/inputmethod/latin/WordComposer.java +++ b/java/src/com/android/inputmethod/latin/WordComposer.java @@ -39,9 +39,9 @@ public class WordComposer { private boolean mAutoCapitalized; /** - * Whether the user chose to capitalize the word. + * Whether the user chose to capitalize the first char of the word. */ - private boolean mIsCapitalized; + private boolean mIsFirstCharCapitalized; public WordComposer() { mCodes = new ArrayList<int[]>(12); @@ -54,7 +54,7 @@ public class WordComposer { mTypedWord = new StringBuilder(copy.mTypedWord); mCapsCount = copy.mCapsCount; mAutoCapitalized = copy.mAutoCapitalized; - mIsCapitalized = copy.mIsCapitalized; + mIsFirstCharCapitalized = copy.mIsFirstCharCapitalized; } /** @@ -62,7 +62,7 @@ public class WordComposer { */ public void reset() { mCodes.clear(); - mIsCapitalized = false; + mIsFirstCharCapitalized = false; mPreferredWord = null; mTypedWord.setLength(0); mCapsCount = 0; @@ -138,18 +138,26 @@ public class WordComposer { return mTypedWord; } - public void setCapitalized(boolean capitalized) { - mIsCapitalized = capitalized; + public void setFirstCharCapitalized(boolean capitalized) { + mIsFirstCharCapitalized = capitalized; } /** * Whether or not the user typed a capital letter as the first letter in the word * @return capitalization preference */ - public boolean isCapitalized() { - return mIsCapitalized; + public boolean isFirstCharCapitalized() { + return mIsFirstCharCapitalized; } - + + /** + * Whether or not all of the user typed chars are upper case + * @return true if all user typed chars are upper case, false otherwise + */ + public boolean isAllUpperCase() { + return (mCapsCount > 0) && (mCapsCount == size()); + } + /** * Stores the user's selected word, before it is actually committed to the text field. * @param preferred |