diff options
Diffstat (limited to 'java')
-rw-r--r-- | java/res/values/themes-common.xml | 11 | ||||
-rw-r--r-- | java/res/values/themes-holo.xml | 33 | ||||
-rw-r--r-- | java/res/values/themes-ics.xml | 12 | ||||
-rw-r--r-- | java/res/values/themes-klp.xml | 12 | ||||
-rw-r--r-- | java/res/values/themes-lxx-dark.xml | 12 | ||||
-rw-r--r-- | java/res/values/themes-lxx-light.xml | 12 | ||||
-rw-r--r-- | java/res/values/themes-lxx.xml | 34 | ||||
-rw-r--r-- | java/res/xml/method.xml | 16 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/DictionaryFacilitator.java | 4 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java | 58 |
10 files changed, 140 insertions, 64 deletions
diff --git a/java/res/values/themes-common.xml b/java/res/values/themes-common.xml index b139110ca..be9a6cee0 100644 --- a/java/res/values/themes-common.xml +++ b/java/res/values/themes-common.xml @@ -22,15 +22,18 @@ <style name="KeyboardIcons" /> <!-- Default theme values --> <style name="Keyboard"> - <item name="touchPositionCorrectionData">@array/touch_position_correction_data_default</item> <item name="rowHeight">25%p</item> - <item name="moreKeysTemplate">@xml/kbd_more_keys_keyboard_template</item> + <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item> + <item name="verticalGap">@fraction/config_key_vertical_gap_holo</item> + <item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item> + <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item> + <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item> <item name="keyboardLeftPadding">@fraction/config_keyboard_left_padding</item> <item name="keyboardRightPadding">@fraction/config_keyboard_right_padding</item> + <item name="moreKeysTemplate">@xml/kbd_more_keys_keyboard_template</item> <item name="maxMoreKeysColumn">@integer/config_max_more_keys_column</item> </style> <style name="KeyboardView"> - <item name="keyBackground">@drawable/btn_keyboard_key_klp</item> <item name="keyLetterSize">@fraction/config_key_letter_ratio</item> <item name="keyLargeLetterRatio">@fraction/config_key_large_letter_ratio</item> <item name="keyLabelSize">@fraction/config_key_label_ratio</item> @@ -39,6 +42,8 @@ <item name="keyHintLabelRatio">@fraction/config_key_hint_label_ratio</item> <item name="keyShiftedLetterHintRatio">@fraction/config_key_shifted_letter_hint_ratio</item> <item name="keyTypeface">normal</item> + <!-- A negative value to disable key text shadow layer. --> + <item name="keyTextShadowRadius">-1.0</item> <item name="keyHintLetterPadding">@dimen/config_key_hint_letter_padding</item> <item name="keyPopupHintLetterPadding">@dimen/config_key_popup_hint_letter_padding</item> <item name="keyShiftedLetterHintPadding">@dimen/config_key_shifted_letter_hint_padding</item> diff --git a/java/res/values/themes-holo.xml b/java/res/values/themes-holo.xml new file mode 100644 index 000000000..f344dd7c8 --- /dev/null +++ b/java/res/values/themes-holo.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2014, 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:android="http://schemas.android.com/apk/res/android"> + <!-- Holo KeyboardView theme (ICS and KLP) --> + <style + name="KeyboardView.Holo" + parent="KeyboardView" + > + <item name="keyTypeface">bold</item> + <item name="keyLargeLetterRatio">@fraction/config_key_large_letter_ratio</item> + <item name="keyHintLabelRatio">@fraction/config_key_hint_label_ratio</item> + <!-- U+2026: "…" HORIZONTAL ELLIPSIS --> + <item name="keyPopupHintLetter">…</item> + </style> +</resources> diff --git a/java/res/values/themes-ics.xml b/java/res/values/themes-ics.xml index a6f390cbb..6fddcb905 100644 --- a/java/res/values/themes-ics.xml +++ b/java/res/values/themes-ics.xml @@ -35,21 +35,15 @@ > <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] --> <item name="themeId">2</item> - <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item> - <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item> - <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item> - <item name="verticalGap">@fraction/config_key_vertical_gap_holo</item> - <item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item> </style> <style name="KeyboardView.ICS" - parent="KeyboardView" + parent="KeyboardView.Holo" > <item name="android:background">@drawable/keyboard_background_holo</item> <item name="keyBackground">@drawable/btn_keyboard_key_ics</item> <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_ics</item> <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_ics</item> - <item name="keyTypeface">bold</item> <item name="keyTextColor">@color/key_text_color_holo</item> <item name="keyTextInactivatedColor">@color/key_text_inactivated_color_holo</item> <item name="functionalTextColor">@color/key_text_color_holo</item> @@ -58,10 +52,6 @@ <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_holo</item> <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_holo</item> <item name="keyPreviewTextColor">@color/key_text_color_holo</item> - <!-- A negative value to disable key text shadow layer. --> - <item name="keyTextShadowRadius">-1.0</item> - <!-- U+2026: "…" HORIZONTAL ELLIPSIS --> - <item name="keyPopupHintLetter">…</item> </style> <style name="MainKeyboardView.ICS" diff --git a/java/res/values/themes-klp.xml b/java/res/values/themes-klp.xml index 8782a76aa..c9b83316c 100644 --- a/java/res/values/themes-klp.xml +++ b/java/res/values/themes-klp.xml @@ -35,21 +35,15 @@ > <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] --> <item name="themeId">0</item> - <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item> - <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item> - <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item> - <item name="verticalGap">@fraction/config_key_vertical_gap_holo</item> - <item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item> </style> <style name="KeyboardView.KLP" - parent="KeyboardView" + parent="KeyboardView.Holo" > <item name="android:background">@drawable/keyboard_background_holo</item> <item name="keyBackground">@drawable/btn_keyboard_key_klp</item> <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_klp</item> <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_klp</item> - <item name="keyTypeface">bold</item> <item name="keyTextColor">@color/key_text_color_holo</item> <item name="keyTextInactivatedColor">@color/key_text_inactivated_color_holo</item> <item name="functionalTextColor">@color/key_text_color_holo</item> @@ -58,10 +52,6 @@ <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_holo</item> <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_holo</item> <item name="keyPreviewTextColor">@color/key_text_color_holo</item> - <!-- A negative value to disable key text shadow layer. --> - <item name="keyTextShadowRadius">-1.0</item> - <!-- U+2026: "…" HORIZONTAL ELLIPSIS --> - <item name="keyPopupHintLetter">…</item> </style> <style name="MainKeyboardView.KLP" diff --git a/java/res/values/themes-lxx-dark.xml b/java/res/values/themes-lxx-dark.xml index fa6aa62e5..6afbd9b15 100644 --- a/java/res/values/themes-lxx-dark.xml +++ b/java/res/values/themes-lxx-dark.xml @@ -35,22 +35,15 @@ > <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] --> <item name="themeId">4</item> - <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item> - <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item> - <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item> - <item name="verticalGap">@fraction/config_key_vertical_gap_holo</item> - <item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item> </style> <style name="KeyboardView.LXX_Dark" - parent="KeyboardView" + parent="KeyboardView.LXX" > <item name="android:background">@drawable/keyboard_background_lxx_dark</item> <item name="keyBackground">@drawable/btn_keyboard_key_lxx_dark</item> <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_lxx_dark</item> <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_lxx_dark</item> - <item name="spacebarIconWidthRatio">0.9</item> - <item name="keyTypeface">normal</item> <item name="keyTextColor">@color/key_text_color_lxx_dark</item> <item name="keyTextInactivatedColor">@color/key_functional_text_color_lxx_dark</item> <item name="functionalTextColor">@color/key_text_color_lxx_dark</item> @@ -59,9 +52,6 @@ <item name="keyShiftedLetterHintInactivatedColor">@color/key_text_inactive_color_lxx_dark</item> <item name="keyShiftedLetterHintActivatedColor">@color/key_text_color_lxx_dark</item> <item name="keyPreviewTextColor">@color/key_text_color_lxx_dark</item> - <!-- A negative value to disable key text shadow layer. --> - <item name="keyTextShadowRadius">-1.0</item> - <item name="keyPopupHintLetter"></item> <!-- No popup hint letter --> </style> <style name="MainKeyboardView.LXX_Dark" diff --git a/java/res/values/themes-lxx-light.xml b/java/res/values/themes-lxx-light.xml index e7350f924..b3ced80a1 100644 --- a/java/res/values/themes-lxx-light.xml +++ b/java/res/values/themes-lxx-light.xml @@ -35,22 +35,15 @@ > <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] --> <item name="themeId">3</item> - <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item> - <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item> - <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item> - <item name="verticalGap">@fraction/config_key_vertical_gap_holo</item> - <item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item> </style> <style name="KeyboardView.LXX_Light" - parent="KeyboardView" + parent="KeyboardView.LXX" > <item name="android:background">@drawable/keyboard_background_lxx_light</item> <item name="keyBackground">@drawable/btn_keyboard_key_lxx_light</item> <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_lxx_light</item> <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_lxx_light</item> - <item name="spacebarIconWidthRatio">0.9</item> - <item name="keyTypeface">normal</item> <item name="keyTextColor">@color/key_text_color_lxx_light</item> <item name="keyTextInactivatedColor">@color/key_text_inactive_color_lxx_light</item> <item name="functionalTextColor">@color/key_functional_text_color_lxx_light</item> @@ -59,9 +52,6 @@ <item name="keyShiftedLetterHintInactivatedColor">@color/key_text_inactive_color_lxx_light</item> <item name="keyShiftedLetterHintActivatedColor">@color/key_text_color_lxx_light</item> <item name="keyPreviewTextColor">@color/key_text_color_lxx_light</item> - <!-- A negative value to disable key text shadow layer. --> - <item name="keyTextShadowRadius">-1.0</item> - <item name="keyPopupHintLetter"></item> <!-- No popup hint letter --> </style> <style name="MainKeyboardView.LXX_Light" diff --git a/java/res/values/themes-lxx.xml b/java/res/values/themes-lxx.xml new file mode 100644 index 000000000..3a022e591 --- /dev/null +++ b/java/res/values/themes-lxx.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2014, 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:android="http://schemas.android.com/apk/res/android"> + <!-- LXX KeyboardView theme (LXX_Light and LXX_Dark) --> + <style + name="KeyboardView.LXX" + parent="KeyboardView" + > + <item name="keyTypeface">normal</item> + <item name="keyLargeLetterRatio">@fraction/config_key_large_letter_ratio</item> + <item name="keyHintLabelRatio">@fraction/config_key_hint_label_ratio</item> + <item name="spacebarIconWidthRatio">0.9</item> + <!-- No popup hint letter --> + <item name="keyPopupHintLetter"></item> + </style> +</resources> diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml index cfe25d1c4..7013c6b86 100644 --- a/java/res/xml/method.xml +++ b/java/res/xml/method.xml @@ -178,6 +178,7 @@ /> <!-- TODO: This bengali keyboard is a preliminary layout. This isn't based on the final specification. --> + <!-- <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0xbff5986c" @@ -186,6 +187,7 @@ android:imeSubtypeExtraValue="KeyboardLayoutSet=bengali,EmojiCapable" android:isAsciiCapable="false" /> + --> <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0xd2e520d5" @@ -446,6 +448,7 @@ /> <!-- TODO: This kannada keyboard is a preliminary layout. This isn't based on the final specification. --> + <!-- <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0x8c78064f" @@ -454,6 +457,7 @@ android:imeSubtypeExtraValue="KeyboardLayoutSet=kannada,EmojiCapable" android:isAsciiCapable="false" /> + --> <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0x2e391c04" @@ -496,6 +500,7 @@ /> <!-- TODO: This malayalam keyboard is a preliminary layout. This isn't based on the final specification. --> + <!-- <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0xc182ebd4" @@ -504,6 +509,7 @@ android:imeSubtypeExtraValue="KeyboardLayoutSet=malayalam,EmojiCapable" android:isAsciiCapable="false" /> + --> <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0xcdcfc3ab" @@ -514,6 +520,7 @@ /> <!-- TODO: This marathi keyboard is a preliminary layout. This isn't based on the final specification. --> + <!-- <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0x747b9f03" @@ -522,6 +529,7 @@ android:imeSubtypeExtraValue="KeyboardLayoutSet=marathi,EmojiCapable" android:isAsciiCapable="false" /> + --> <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0x84c87c61" @@ -532,6 +540,7 @@ /> <!-- TODO: This Myanmar keyboard is a preliminary layout. This isn't based on the final specification. --> + <!-- <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0xea266ea4" @@ -540,6 +549,7 @@ android:imeSubtypeExtraValue="KeyboardLayoutSet=myanmar,EmojiCapable,CombiningRules=MyanmarReordering" android:isAsciiCapable="false" /> + --> <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0x3f12ee14" @@ -622,6 +632,7 @@ /> <!-- TODO: This sinhala keyboard is a preliminary layout. This isn't based on the final specification. --> + <!-- <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0x5c6b3bde" @@ -630,6 +641,7 @@ android:imeSubtypeExtraValue="KeyboardLayoutSet=sinhala,EmojiCapable" android:isAsciiCapable="false" /> + --> <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0x8e94d413" @@ -690,6 +702,7 @@ /> <!-- TODO: This tamil keyboard is a preliminary layout. This isn't based on the final specification. --> + <!-- <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0x67acea2a" @@ -698,8 +711,10 @@ android:imeSubtypeExtraValue="KeyboardLayoutSet=tamil,EmojiCapable" android:isAsciiCapable="false" /> + --> <!-- TODO: This telugu keyboard is a preliminary layout. This isn't based on the final specification. --> + <!-- <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0x1e177389" @@ -708,6 +723,7 @@ android:imeSubtypeExtraValue="KeyboardLayoutSet=telugu,EmojiCapable" android:isAsciiCapable="false" /> + --> <subtype android:icon="@drawable/ic_ime_switcher_dark" android:label="@string/subtype_generic" android:subtypeId="0x1f94d5d4" diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java index d6e6656ab..36a02669d 100644 --- a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java +++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java @@ -468,7 +468,9 @@ public class DictionaryFacilitator { // We don't add words with 0-frequency (assuming they would be profanity etc.). final boolean isValid = maxFreq > 0; UserHistoryDictionary.addToDictionary(userHistoryDictionary, prevWordsInfo, secondWord, - isValid, timeStampInSeconds, mDistracterFilter); + isValid, timeStampInSeconds, + new DistracterFilterCheckingIsInDictionary( + mDistracterFilter, userHistoryDictionary)); } private void removeWord(final String dictName, final String word) { diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java index 5808b9e4e..c11a220a4 100644 --- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java @@ -38,6 +38,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Locale; import java.util.Map; +import java.util.concurrent.Callable; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; @@ -163,9 +164,31 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { } private void asyncExecuteTaskWithLock(final Lock lock, final Runnable task) { + asyncPreCheckAndExecuteTaskWithLock(lock, null /* preCheckTask */, task); + } + + private void asyncPreCheckAndExecuteTaskWithWriteLock( + final Callable<Boolean> preCheckTask, final Runnable task) { + asyncPreCheckAndExecuteTaskWithLock(mLock.writeLock(), preCheckTask, task); + + } + + // Execute task with lock when the result of preCheckTask is true or preCheckTask is null. + private void asyncPreCheckAndExecuteTaskWithLock(final Lock lock, + final Callable<Boolean> preCheckTask, final Runnable task) { ExecutorUtils.getExecutor(mDictName).execute(new Runnable() { @Override public void run() { + if (preCheckTask != null) { + try { + if (!preCheckTask.call().booleanValue()) { + return; + } + } catch (final Exception e) { + Log.e(TAG, "The pre check task throws an exception.", e); + return; + } + } lock.lock(); try { task.run(); @@ -278,22 +301,25 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { final boolean isBlacklisted, final int timestamp, final DistracterFilter distracterFilter) { reloadDictionaryIfRequired(); - asyncExecuteTaskWithWriteLock(new Runnable() { - @Override - public void run() { - if (mBinaryDictionary == null) { - return; - } - if (distracterFilter.isDistracterToWordsInDictionaries( - PrevWordsInfo.EMPTY_PREV_WORDS_INFO, word, mLocale)) { - // The word is a distracter. - return; - } - runGCIfRequiredLocked(true /* mindsBlockByGC */); - addUnigramLocked(word, frequency, shortcutTarget, shortcutFreq, - isNotAWord, isBlacklisted, timestamp); - } - }); + asyncPreCheckAndExecuteTaskWithWriteLock( + new Callable<Boolean>() { + @Override + public Boolean call() throws Exception { + return !distracterFilter.isDistracterToWordsInDictionaries( + PrevWordsInfo.EMPTY_PREV_WORDS_INFO, word, mLocale); + } + }, + new Runnable() { + @Override + public void run() { + if (mBinaryDictionary == null) { + return; + } + runGCIfRequiredLocked(true /* mindsBlockByGC */); + addUnigramLocked(word, frequency, shortcutTarget, shortcutFreq, + isNotAWord, isBlacklisted, timestamp); + } + }); } protected void addUnigramLocked(final String word, final int frequency, |