diff --git a/java/res/values-xlarge/donottranslate.xml b/java/res/values-xlarge/donottranslate.xml new file mode 100644 index 0000000000000000000000000000000000000000..6f4e9b1f040db908d6ac80285667a5e27d254141 --- /dev/null +++ b/java/res/values-xlarge/donottranslate.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 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. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Default value of the visibility of the suggestion strip --> + <string name="prefs_suggestion_visibility_default_value" translatable="false">1</string> +</resources> diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml index a7c1fcd1868630721c6e6e273626a10d7690c818..ffd6cce0d1c20097f04501b1691e206ff3a851de 100644 --- a/java/res/values/donottranslate.xml +++ b/java/res/values/donottranslate.xml @@ -32,4 +32,14 @@ <string name="settings_key_mode_always_show" translatable="false">1</string> <!-- Always hide the settings key --> <string name="settings_key_mode_always_hide" translatable="false">2</string> + + <!-- Always show the suggestion strip --> + <string name="prefs_suggestion_visibility_show_value" translatable="false">0</string> + <!-- Show the suggestion strip only on portrait mode --> + <string name="prefs_suggestion_visibility_show_only_portrait_value" translatable="false">1</string> + <!-- Always hide the suggestion strip --> + <string name="prefs_suggestion_visibility_hide_value" translatable="false">2</string> + <!-- Default value of the visibility of the suggestion strip --> + <string name="prefs_suggestion_visibility_default_value" translatable="false">0</string> + </resources> diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index a1a811274c5b4d7062f488743feab72f659d9fd0..005fe5e671ec0242364f5f4a8ad7778718fcf284 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -82,10 +82,24 @@ <string name="quick_fixes_summary">Corrects commonly typed mistakes</string> <!-- Option to enable showing suggestions --> - <string name="show_suggestions">Show suggestions</string> + <string name="prefs_show_suggestions">Show suggestions</string> <!-- Description for show suggestions --> - <string name="show_suggestions_summary">Display suggested words while typing</string> - + <string name="prefs_show_suggestions_summary">Display suggested words while typing</string> + <!-- Option to show/hide the suggestion strip --> + <string-array name="prefs_suggestion_visibility_values" translatable="false"> + <item>@string/prefs_suggestion_visibility_show_value</item> + <item>@string/prefs_suggestion_visibility_show_only_portrait_value</item> + <item>@string/prefs_suggestion_visibility_hide_value</item> + </string-array> + <string name="prefs_suggestion_visibility_show_name">Always show</string> + <string name="prefs_suggestion_visibility_show_only_portrait_name">Show on portrait mode</string> + <string name="prefs_suggestion_visibility_hide_name">Always hide</string> + <string-array name="prefs_suggestion_visibilities" translatable="false"> + <item>@string/prefs_suggestion_visibility_show_name</item> + <item>@string/prefs_suggestion_visibility_show_only_portrait_name</item> + <item>@string/prefs_suggestion_visibility_hide_name</item> + </string-array> + <!-- Option to show/hide the settings key --> <string name="prefs_settings_key">Show settings key</string> <!-- Array of the settings key mode values --> diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml index af1396c131e4ad7b967c815d60d6e29bb367570e..2ca1af9ee7aac0261b6d4af2a8038f310a270ede 100644 --- a/java/res/xml/prefs.xml +++ b/java/res/xml/prefs.xml @@ -90,12 +90,14 @@ android:defaultValue="true" /> - <CheckBoxPreference - android:key="show_suggestions" - android:title="@string/show_suggestions" - android:summary="@string/show_suggestions_summary" + <ListPreference + android:key="show_suggestions_setting" + android:summary="@string/prefs_show_suggestions_summary" + android:title="@string/prefs_show_suggestions" android:persistent="true" - android:defaultValue="true" + android:entryValues="@array/prefs_suggestion_visibility_values" + android:entries="@array/prefs_suggestion_visibilities" + android:defaultValue="@string/prefs_suggestion_visibility_default_value" /> <ListPreference diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 4614df988469cce8f836538309298b04bc661475..b3ac17b07c171356e7e77c3d1fa566f4c3564248 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -95,7 +95,7 @@ public class LatinIME extends InputMethodService private static final String PREF_POPUP_ON = "popup_on"; private static final String PREF_AUTO_CAP = "auto_cap"; private static final String PREF_QUICK_FIXES = "quick_fixes"; - private static final String PREF_SHOW_SUGGESTIONS = "show_suggestions"; + private static final String PREF_SHOW_SUGGESTIONS_SETTING = "show_suggestions_setting"; private static final String PREF_AUTO_COMPLETION_THRESHOLD = "auto_completion_threshold"; private static final String PREF_BIGRAM_SUGGESTIONS = "bigram_suggestion"; private static final String PREF_VOICE_MODE = "voice_mode"; @@ -155,6 +155,20 @@ public class LatinIME extends InputMethodService private static final int POS_METHOD = 0; private static final int POS_SETTINGS = 1; + private int mSuggestionVisibility; + private static final int SUGGESTION_VISIBILILTY_SHOW_VALUE + = R.string.prefs_suggestion_visibility_show_value; + private static final int SUGGESTION_VISIBILILTY_SHOW_ONLY_PORTRAIT_VALUE + = R.string.prefs_suggestion_visibility_show_only_portrait_value; + private static final int SUGGESTION_VISIBILILTY_HIDE_VALUE + = R.string.prefs_suggestion_visibility_hide_value; + + private static final int[] SUGGESTION_VISIBILITY_VALUE_ARRAY = new int[] { + SUGGESTION_VISIBILILTY_SHOW_VALUE, + SUGGESTION_VISIBILILTY_SHOW_ONLY_PORTRAIT_VALUE, + SUGGESTION_VISIBILILTY_HIDE_VALUE + }; + private LinearLayout mCandidateViewContainer; private CandidateView mCandidateView; private Suggest mSuggest; @@ -206,7 +220,6 @@ public class LatinIME extends InputMethodService private boolean mHasUsedVoiceInput; private boolean mHasUsedVoiceInputUnsupportedLocale; private boolean mLocaleSupportedForVoiceInput; - private boolean mShowSuggestions; private boolean mIsShowingHint; private int mCorrectionMode; private boolean mVoiceButtonEnabled; @@ -674,7 +687,7 @@ public class LatinIME extends InputMethodService inputView.setPreviewEnabled(mPopupOn); inputView.setProximityCorrectionEnabled(true); - mPredictionOn = mPredictionOn && (mCorrectionMode > 0 || mShowSuggestions); + mPredictionOn = mPredictionOn && (mCorrectionMode > 0 || isSuggestionShown()); // If we just entered a text field, maybe it has some old text that requires correction checkReCorrectionOnStart(); checkTutorial(attribute.privateImeOptions); @@ -819,9 +832,8 @@ public class LatinIME extends InputMethodService abortCorrection(false); // Show the punctuation suggestions list if the current one is not // and if not showing "Touch again to save". - if (mCandidateView != null - && !mSuggestPuncList.equals(mCandidateView.getSuggestions()) - && !mCandidateView.isShowingAddToDictionaryHint()) { + if (mCandidateView != null && !isShowingPunctuationList() + && !mCandidateView.isShowingAddToDictionaryHint()) { setPunctuationSuggestions(); } } @@ -1574,9 +1586,21 @@ public class LatinIME extends InputMethodService return mPredictionOn; } + private boolean isShowingPunctuationList() { + return mSuggestPuncList.equals(mCandidateView.getSuggestions()); + } + + private boolean isSuggestionShown() { + return (mSuggestionVisibility == SUGGESTION_VISIBILILTY_SHOW_VALUE) + || (mSuggestionVisibility == SUGGESTION_VISIBILILTY_SHOW_ONLY_PORTRAIT_VALUE + && mOrientation == Configuration.ORIENTATION_PORTRAIT); + } + private boolean isCandidateStripVisible() { - return (isPredictionOn() && mShowSuggestions) || mCompletionOn - || mCandidateView.isShowingAddToDictionaryHint() || TextEntryState.isCorrecting(); + boolean forceVisible = mCandidateView.isShowingAddToDictionaryHint() + || TextEntryState.isCorrecting(); + return forceVisible || (isSuggestionShown() + && (isPredictionOn() || mCompletionOn || isShowingPunctuationList())); } public void onCancelVoice() { @@ -2470,6 +2494,18 @@ public class LatinIME extends InputMethodService mSuggest.setAutoTextEnabled(!different && mQuickFixes); } + private void updateSuggestionVisibility(SharedPreferences prefs) { + final String suggestionVisiblityStr = prefs.getString( + PREF_SHOW_SUGGESTIONS_SETTING, mResources.getString( + R.string.prefs_suggestion_visibility_default_value)); + for (int visibility : SUGGESTION_VISIBILITY_VALUE_ARRAY) { + if (suggestionVisiblityStr.equals(mResources.getString(visibility))) { + mSuggestionVisibility = visibility; + break; + } + } + } + protected void launchSettings() { launchSettings(LatinIMESettings.class); } @@ -2515,8 +2551,7 @@ public class LatinIME extends InputMethodService mLocaleSupportedForVoiceInput = voiceInputSupportedLocales.contains(mInputLocale); - mShowSuggestions = sp.getBoolean(PREF_SHOW_SUGGESTIONS, true); - mAutoCorrectEnabled = mShowSuggestions && isAutoCorrectEnabled(sp); + mAutoCorrectEnabled = isAutoCorrectEnabled(sp); mBigramSuggestionEnabled = mAutoCorrectEnabled && isBigramSuggestionEnabled(sp); loadAndSetAutoCompletionThreshold(sp); @@ -2529,6 +2564,7 @@ public class LatinIME extends InputMethodService } updateCorrectionMode(); updateAutoTextEnabled(mResources.getConfiguration().locale); + updateSuggestionVisibility(sp); mLanguageSwitcher.loadLocales(sp); } diff --git a/java/src/com/android/inputmethod/latin/LatinIMESettings.java b/java/src/com/android/inputmethod/latin/LatinIMESettings.java index d8f3ebc5124a2a1041412c99a1a96139954448a5..0f0fe1ea20722d5296465b2120ab6317f80fef2f 100644 --- a/java/src/com/android/inputmethod/latin/LatinIMESettings.java +++ b/java/src/com/android/inputmethod/latin/LatinIMESettings.java @@ -44,7 +44,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 PREF_SHOW_SUGGESTIONS = "show_suggestions"; private static final String PREF_AUTO_COMPLETION_THRESHOLD = "auto_completion_threshold"; private static final String PREF_BIGRAM_SUGGESTIONS = "bigram_suggestion"; /* package */ static final String PREF_SETTINGS_KEY = "settings_key"; @@ -58,7 +57,6 @@ public class LatinIMESettings extends PreferenceActivity private CheckBoxPreference mQuickFixes; private ListPreference mVoicePreference; private ListPreference mSettingsKeyPreference; - private CheckBoxPreference mShowSuggestions; private ListPreference mAutoCompletionThreshold; private CheckBoxPreference mBigramSuggestion; private boolean mVoiceOn; @@ -69,16 +67,10 @@ public class LatinIMESettings extends PreferenceActivity private String mVoiceModeOff; private void ensureConsistencyOfAutoCompletionSettings() { - if (mShowSuggestions.isChecked()) { - mAutoCompletionThreshold.setEnabled(true); - final String autoCompletionOff = getResources().getString( - R.string.auto_completion_threshold_mode_value_off); - final String currentSetting = mAutoCompletionThreshold.getValue(); - mBigramSuggestion.setEnabled(!currentSetting.equals(autoCompletionOff)); - } else { - mAutoCompletionThreshold.setEnabled(false); - mBigramSuggestion.setEnabled(false); - } + final String autoCompletionOff = getResources().getString( + R.string.auto_completion_threshold_mode_value_off); + final String currentSetting = mAutoCompletionThreshold.getValue(); + mBigramSuggestion.setEnabled(!currentSetting.equals(autoCompletionOff)); } @Override protected void onCreate(Bundle icicle) { @@ -94,7 +86,6 @@ public class LatinIMESettings extends PreferenceActivity mVoiceOn = !(prefs.getString(VOICE_SETTINGS_KEY, mVoiceModeOff).equals(mVoiceModeOff)); mLogger = VoiceInputLogger.getLogger(this); - mShowSuggestions = (CheckBoxPreference) findPreference(PREF_SHOW_SUGGESTIONS); mAutoCompletionThreshold = (ListPreference) findPreference(PREF_AUTO_COMPLETION_THRESHOLD); mBigramSuggestion = (CheckBoxPreference) findPreference(PREF_BIGRAM_SUGGESTIONS); ensureConsistencyOfAutoCompletionSettings();