diff options
Diffstat (limited to 'java')
-rw-r--r-- | java/res/layout/more_keys_keyboard.xml | 4 | ||||
-rw-r--r-- | java/res/layout/more_suggestions.xml | 3 | ||||
-rw-r--r-- | java/res/values-sw540dp/config.xml | 1 | ||||
-rw-r--r-- | java/res/values-sw600dp/config.xml | 23 | ||||
-rw-r--r-- | java/res/values/attrs.xml | 2 | ||||
-rw-r--r-- | java/res/values/themes-gb.xml | 8 | ||||
-rw-r--r-- | java/res/values/themes-ics.xml | 8 | ||||
-rw-r--r-- | java/res/values/themes-klp.xml | 8 | ||||
-rw-r--r-- | java/res/xml/prefs_for_debug.xml | 6 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java | 94 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/Suggest.java | 3 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java | 12 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdateSession.java | 16 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/settings/DebugSettings.java | 3 |
14 files changed, 144 insertions, 47 deletions
diff --git a/java/res/layout/more_keys_keyboard.xml b/java/res/layout/more_keys_keyboard.xml index 6637117e0..f3795afdc 100644 --- a/java/res/layout/more_keys_keyboard.xml +++ b/java/res/layout/more_keys_keyboard.xml @@ -22,11 +22,9 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:orientation="horizontal" - style="?attr/moreKeysKeyboardContainerStyle" + android:orientation="vertical" > <com.android.inputmethod.keyboard.MoreKeysKeyboardView - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" android:id="@+id/more_keys_keyboard_view" android:layout_width="wrap_content" android:layout_height="wrap_content" /> diff --git a/java/res/layout/more_suggestions.xml b/java/res/layout/more_suggestions.xml index 8659f0761..264325890 100644 --- a/java/res/layout/more_suggestions.xml +++ b/java/res/layout/more_suggestions.xml @@ -22,8 +22,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:orientation="horizontal" - style="?attr/moreKeysKeyboardContainerStyle" + android:orientation="vertical" > <com.android.inputmethod.latin.suggestions.MoreSuggestionsView xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" diff --git a/java/res/values-sw540dp/config.xml b/java/res/values-sw540dp/config.xml index 926098800..ac992ea23 100644 --- a/java/res/values-sw540dp/config.xml +++ b/java/res/values-sw540dp/config.xml @@ -19,7 +19,6 @@ --> <resources> - <bool name="config_enable_show_voice_key_option">false</bool> <bool name="config_enable_show_option_of_key_preview_popup">false</bool> <!-- Whether or not Popup on key press is enabled by default --> <bool name="config_default_key_preview_popup">false</bool> diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml new file mode 100644 index 000000000..e72e4941e --- /dev/null +++ b/java/res/values-sw600dp/config.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2013, 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> + <bool name="config_enable_show_voice_key_option">false</bool> +</resources> diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index a7425f1e7..f2dc47357 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -32,8 +32,6 @@ <attr name="moreKeysKeyboardStyle" format="reference" /> <!-- MoreKeysKeyboardView style --> <attr name="moreKeysKeyboardViewStyle" format="reference" /> - <!-- MoreKeysKeyboardView container style --> - <attr name="moreKeysKeyboardContainerStyle" format="reference" /> <!-- Suggestions strip style --> <attr name="suggestionStripViewStyle" format="reference" /> <!-- Suggestion word style --> diff --git a/java/res/values/themes-gb.xml b/java/res/values/themes-gb.xml index f52695f55..2932143cd 100644 --- a/java/res/values/themes-gb.xml +++ b/java/res/values/themes-gb.xml @@ -26,7 +26,6 @@ <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.GB</item> <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.GB</item> <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.GB</item> - <item name="moreKeysKeyboardContainerStyle">@style/MoreKeysKeyboardContainer.GB</item> <item name="suggestionStripViewStyle">@style/SuggestionStripView.GB</item> <item name="suggestionWordStyle">@style/SuggestionWord.GB</item> </style> @@ -118,17 +117,12 @@ name="MoreKeysKeyboardView.GB" parent="KeyboardView.GB" > - <item name="android:background">@null</item> + <item name="android:background">@drawable/keyboard_popup_panel_background_gb</item> <item name="keyBackground">@drawable/btn_keyboard_key_popup_gb</item> <item name="keyTypeface">normal</item> <item name="verticalCorrection">@dimen/more_keys_keyboard_vertical_correction_gb</item> </style> <style - name="MoreKeysKeyboardContainer.GB" - > - <item name="android:background">@drawable/keyboard_popup_panel_background_gb</item> - </style> - <style name="SuggestionStripView.GB" parent="SuggestionStripView" > diff --git a/java/res/values/themes-ics.xml b/java/res/values/themes-ics.xml index 432ad5122..e854cd124 100644 --- a/java/res/values/themes-ics.xml +++ b/java/res/values/themes-ics.xml @@ -26,7 +26,6 @@ <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.ICS</item> <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.ICS</item> <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.ICS</item> - <item name="moreKeysKeyboardContainerStyle">@style/MoreKeysKeyboardContainer.ICS</item> <item name="suggestionStripViewStyle">@style/SuggestionStripView.ICS</item> <item name="suggestionWordStyle">@style/SuggestionWord.ICS</item> </style> @@ -96,17 +95,12 @@ name="MoreKeysKeyboardView.ICS" parent="KeyboardView.ICS" > - <item name="android:background">@null</item> + <item name="android:background">@drawable/keyboard_popup_panel_background_ics</item> <item name="keyBackground">@drawable/btn_keyboard_key_popup_ics</item> <item name="keyTypeface">normal</item> <item name="verticalCorrection">@dimen/more_keys_keyboard_vertical_correction_holo</item> </style> <style - name="MoreKeysKeyboardContainer.ICS" - > - <item name="android:background">@drawable/keyboard_popup_panel_background_ics</item> - </style> - <style name="SuggestionStripView.ICS" parent="SuggestionStripView" > diff --git a/java/res/values/themes-klp.xml b/java/res/values/themes-klp.xml index a3730019d..c404b6a32 100644 --- a/java/res/values/themes-klp.xml +++ b/java/res/values/themes-klp.xml @@ -26,7 +26,6 @@ <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.KLP</item> <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.KLP</item> <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.KLP</item> - <item name="moreKeysKeyboardContainerStyle">@style/MoreKeysKeyboardContainer.KLP</item> <item name="suggestionStripViewStyle">@style/SuggestionStripView.KLP</item> <item name="suggestionWordStyle">@style/SuggestionWord.KLP</item> </style> @@ -96,17 +95,12 @@ name="MoreKeysKeyboardView.KLP" parent="KeyboardView.KLP" > - <item name="android:background">@null</item> + <item name="android:background">@drawable/keyboard_popup_panel_background_klp</item> <item name="keyBackground">@drawable/btn_keyboard_key_popup_klp</item> <item name="keyTypeface">normal</item> <item name="verticalCorrection">@dimen/more_keys_keyboard_vertical_correction_holo</item> </style> <style - name="MoreKeysKeyboardContainer.KLP" - > - <item name="android:background">@drawable/keyboard_popup_panel_background_klp</item> - </style> - <style name="SuggestionStripView.KLP" parent="SuggestionStripView" > diff --git a/java/res/xml/prefs_for_debug.xml b/java/res/xml/prefs_for_debug.xml index 8d9508e38..124c44388 100644 --- a/java/res/xml/prefs_for_debug.xml +++ b/java/res/xml/prefs_for_debug.xml @@ -58,6 +58,12 @@ android:persistent="true" android:title="@string/prefs_use_only_personalization_dictionary" /> + <CheckBoxPreference + android:defaultValue="false" + android:key="boost_personalization_dictionary_for_debug" + android:persistent="true" + android:title="@string/prefs_boost_personalization_dictionary" /> + <PreferenceScreen android:key="read_external_dictionary" android:title="@string/prefs_read_external_dictionary" /> diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java index d059cc8a9..a0e4e5472 100644 --- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java @@ -288,7 +288,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { private void runGCIfRequiredInternalLocked(final boolean mindsBlockByGC) { // Calls to needsToRunGC() need to be serialized. if (mBinaryDictionary.needsToRunGC(mindsBlockByGC)) { - if (setIsRegeneratingIfNotRegenerating()) { + if (setProcessingLargeTaskIfNot()) { // Run GC after currently existing time sensitive operations. getExecutor(mFilename).executePrioritized(new Runnable() { @Override @@ -296,7 +296,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { try { mBinaryDictionary.flushWithGC(); } finally { - mFilenameDictionaryUpdateController.mIsRegenerating.set(false); + mFilenameDictionaryUpdateController.mProcessingLargeTask.set(false); } } }); @@ -359,13 +359,76 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { }); } + public interface AddMultipleDictionaryEntriesCallback { + public void onFinished(); + } + + public static class LanguageModelParam { + public final String mWord0; + public final String mWord1; + public final boolean mIsValid; + public final int mFrequency; + public final int mBigramFrequency; + public LanguageModelParam(final String word0, final String word1, final boolean isValid, + final int frequency, final int bigramFrequency) { + mWord0 = word0; + mWord1 = word1; + mIsValid = isValid; + mFrequency = frequency; + mBigramFrequency = bigramFrequency; + } + } + + /** + * Dynamically add multiple entries to the dictionary. + */ + protected void addMultipleDictionaryEntriesDynamically( + final ArrayList<LanguageModelParam> languageModelParams, + final AddMultipleDictionaryEntriesCallback callback) { + if (!mIsUpdatable) { + Log.w(TAG, "addMultipleDictionaryEntriesDynamically is called for non-updatable " + + "dictionary: " + mFilename); + return; + } + getExecutor(mFilename).execute(new Runnable() { + @Override + public void run() { + final boolean locked = setProcessingLargeTaskIfNot(); + try { + for (final LanguageModelParam languageModelParam : languageModelParams) { + if (languageModelParam.mWord1 == null) { + continue; + } + if (mBinaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) { + mBinaryDictionary.flushWithGC(); + } + mBinaryDictionary.addUnigramWord(languageModelParam.mWord1, + languageModelParam.mFrequency); + if (languageModelParam.mWord0 != null + && !languageModelParam.mWord0.equals(languageModelParam.mWord1)) { + mBinaryDictionary.addBigramWords(languageModelParam.mWord0, + languageModelParam.mWord1, languageModelParam.mBigramFrequency); + } + } + } finally { + if (callback != null) { + callback.onFinished(); + } + if (locked) { + mFilenameDictionaryUpdateController.mProcessingLargeTask.set(false); + } + } + } + }); + } + @Override public ArrayList<SuggestedWordInfo> getSuggestionsWithSessionId(final WordComposer composer, final String prevWord, final ProximityInfo proximityInfo, final boolean blockOffensiveWords, final int[] additionalFeaturesOptions, final int sessionId) { reloadDictionaryIfRequired(); - if (isRegenerating()) { + if (processingLargeTask()) { return null; } final AsyncResultHolder<ArrayList<SuggestedWordInfo>> holder = @@ -402,7 +465,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { } protected boolean isValidWordInner(final String word) { - if (isRegenerating()) { + if (processingLargeTask()) { return false; } final AsyncResultHolder<Boolean> holder = new AsyncResultHolder<Boolean>(); @@ -524,7 +587,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { */ public final void reloadDictionaryIfRequired() { if (!isReloadRequired()) return; - if (setIsRegeneratingIfNotRegenerating()) { + if (setProcessingLargeTaskIfNot()) { reloadDictionary(); } } @@ -536,13 +599,14 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { return mBinaryDictionary == null || mPerInstanceDictionaryUpdateController.isOutOfDate(); } - private boolean isRegenerating() { - return mFilenameDictionaryUpdateController.mIsRegenerating.get(); + private boolean processingLargeTask() { + return mFilenameDictionaryUpdateController.mProcessingLargeTask.get(); } - // Returns whether the dictionary can be regenerated. - private boolean setIsRegeneratingIfNotRegenerating() { - return mFilenameDictionaryUpdateController.mIsRegenerating.compareAndSet( + // Returns whether the dictionary is being used for a large task. If true, we should not use + // this dictionary for latency sensitive operations. + private boolean setProcessingLargeTaskIfNot() { + return mFilenameDictionaryUpdateController.mProcessingLargeTask.compareAndSet( false /* expect */ , true /* update */); } @@ -592,7 +656,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { } mPerInstanceDictionaryUpdateController.mLastUpdateTime = time; } finally { - mFilenameDictionaryUpdateController.mIsRegenerating.set(false); + mFilenameDictionaryUpdateController.mProcessingLargeTask.set(false); } } }); @@ -619,13 +683,13 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { } /** - * For tracking whether the dictionary is out of date and the dictionary is regenerating. - * Can be shared across multiple dictionary instances that access the same filename. + * For tracking whether the dictionary is out of date and the dictionary is used in a large + * task. Can be shared across multiple dictionary instances that access the same filename. */ private static class DictionaryUpdateController { public volatile long mLastUpdateTime = 0; public volatile long mLastUpdateRequestTime = 0; - public volatile AtomicBoolean mIsRegenerating = new AtomicBoolean(); + public volatile AtomicBoolean mProcessingLargeTask = new AtomicBoolean(); public boolean isOutOfDate() { return (mLastUpdateRequestTime > mLastUpdateTime); @@ -666,7 +730,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { mBinaryDictionary.flushWithGC(); r.run(); } finally { - mFilenameDictionaryUpdateController.mIsRegenerating.set(false); + mFilenameDictionaryUpdateController.mProcessingLargeTask.set(false); } } }); diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java index 0a4c7a55d..53f04b118 100644 --- a/java/src/com/android/inputmethod/latin/Suggest.java +++ b/java/src/com/android/inputmethod/latin/Suggest.java @@ -432,7 +432,8 @@ public final class Suggest { final String scoreInfoString; if (normalizedScore > 0) { scoreInfoString = String.format( - Locale.ROOT, "%d (%4.2f)", cur.mScore, normalizedScore); + Locale.ROOT, "%d (%4.2f), %s", cur.mScore, normalizedScore, + cur.mSourceDict.mDictType); } else { scoreInfoString = Integer.toString(cur.mScore); } diff --git a/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java b/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java index e7a25d216..42bd7600e 100644 --- a/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java +++ b/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java @@ -113,6 +113,18 @@ public abstract class DecayingExpandableBinaryDictionaryBase extends ExpandableB return false; } + public void addMultipleDictionaryEntriesToDictionary( + final ArrayList<LanguageModelParam> languageModelParams, + final ExpandableBinaryDictionary.AddMultipleDictionaryEntriesCallback callback) { + if (languageModelParams == null || languageModelParams.isEmpty()) { + if (callback != null) { + callback.onFinished(); + } + return; + } + addMultipleDictionaryEntriesDynamically(languageModelParams, callback); + } + /** * Pair will be added to the decaying dictionary. * diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdateSession.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdateSession.java index a86f6e584..1f46f5b1c 100644 --- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdateSession.java +++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdateSession.java @@ -18,6 +18,8 @@ package com.android.inputmethod.latin.personalization; import android.content.Context; +import com.android.inputmethod.latin.ExpandableBinaryDictionary; + import java.lang.ref.WeakReference; import java.util.ArrayList; @@ -113,6 +115,20 @@ public abstract class PersonalizationDictionaryUpdateSession { dictionary.addToDictionary(word0, word1, isValid); } + // TODO: Support multi locale. + public void addMultipleDictionaryEntriesToPersonalizationDictionary( + final ArrayList<ExpandableBinaryDictionary.LanguageModelParam> languageModelParams, + final ExpandableBinaryDictionary.AddMultipleDictionaryEntriesCallback callback) { + final DecayingExpandableBinaryDictionaryBase dictionary = getPredictionDictionary(); + if (dictionary == null) { + if (callback != null) { + callback.onFinished(); + } + return; + } + dictionary.addMultipleDictionaryEntriesToDictionary(languageModelParams, callback); + } + // Bulk import // TODO: Support multi locale to add bigram public void addBigramsToPersonalizationDictionary( diff --git a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java index da1fb73fe..d060485bd 100644 --- a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java +++ b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java @@ -112,8 +112,7 @@ public final class DebugSettings extends PreferenceFragment updateDebugMode(); mServiceNeedsRestart = true; } - } else if (key.equals(PREF_FORCE_NON_DISTINCT_MULTITOUCH) - || key.equals(PREF_USE_ONLY_PERSONALIZATION_DICTIONARY_FOR_DEBUG)) { + } else if (key.equals(PREF_FORCE_NON_DISTINCT_MULTITOUCH)) { mServiceNeedsRestart = true; } } |