aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/drawable-land-mdpi/key_hint_at_holo.9.pngbin1541 -> 1592 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_at_large_holo.9.pngbin1647 -> 1651 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.pngbin1258 -> 1293 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.pngbin1337 -> 1338 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_question_holo.9.pngbin1364 -> 1414 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_question_large_holo.9.pngbin1473 -> 1473 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_quote_holo.9.pngbin1217 -> 1230 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.pngbin1249 -> 1249 bytes
-rw-r--r--java/res/drawable-land-mdpi/key_hint_underline_holo.9.pngbin1128 -> 1140 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.pngbin1297 -> 1272 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.pngbin1496 -> 1625 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.pngbin1804 -> 1836 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.pngbin1396 -> 1536 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.pngbin1526 -> 1861 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.pngbin1886 -> 1963 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.pngbin1402 -> 1321 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_light_popup_normal.9.pngbin1004 -> 999 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.pngbin1487 -> 1469 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.pngbin1035 -> 1035 bytes
-rw-r--r--java/res/drawable-mdpi/hint_popup_holo.9.pngbin1180 -> 1187 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_at_holo.9.pngbin1541 -> 1592 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_at_large_holo.9.pngbin1647 -> 1651 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_exclamation_holo.9.pngbin1258 -> 1293 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.pngbin1337 -> 1338 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_question_holo.9.pngbin1364 -> 1414 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_question_large_holo.9.pngbin1473 -> 1473 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_quote_holo.9.pngbin1217 -> 1230 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_quote_large_holo.9.pngbin1249 -> 1249 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_underline_holo.9.pngbin1128 -> 1140 bytes
-rw-r--r--java/res/drawable-mdpi/key_hint_underline_large_holo.9.pngbin1155 -> 1154 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_background_holo.9.pngbin1071 -> 1108 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.pngbin4504 -> 4446 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_popup_panel_background_holo.9.pngbin4323 -> 4459 bytes
-rw-r--r--java/res/drawable-mdpi/mic_slash_holo.pngbin4317 -> 4317 bytes
-rw-r--r--java/res/drawable-mdpi/ok_cancel_holo.9.pngbin1331 -> 1457 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level0_holo.pngbin3455 -> 3457 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level1_holo.pngbin3675 -> 3678 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level2_holo.pngbin3668 -> 3659 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level3_holo.pngbin4032 -> 4028 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level4_holo.pngbin4127 -> 4127 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level5_holo.pngbin4141 -> 4139 bytes
-rw-r--r--java/res/drawable-mdpi/speak_now_level6_holo.pngbin3896 -> 3896 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_delete_holo.pngbin1452 -> 1420 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num0_holo.pngbin1752 -> 1765 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num1_holo.pngbin1324 -> 1325 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num2_holo.pngbin2403 -> 2397 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num3_holo.pngbin2143 -> 2150 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num4_holo.pngbin2063 -> 2063 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num5_holo.pngbin2025 -> 2030 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num6_holo.pngbin2502 -> 2499 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num7_holo.pngbin2540 -> 2540 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num8_holo.pngbin2226 -> 2237 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_num9_holo.pngbin2699 -> 2705 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_numbpound_holo.pngbin1548 -> 1548 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_numbstar_holo.pngbin1414 -> 1414 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_return_holo.pngbin1417 -> 1418 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_shift_holo.pngbin1683 -> 1683 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.pngbin1511 -> 1483 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_smiley_holo.pngbin1463 -> 1262 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_space_holo.pngbin1201 -> 1201 bytes
-rw-r--r--java/res/layout/candidate.xml17
-rw-r--r--java/res/values-xlarge/bools.xml1
-rw-r--r--java/res/values-xlarge/dimens.xml2
-rw-r--r--java/res/values/bools.xml1
-rw-r--r--java/res/values/config.xml8
-rw-r--r--java/res/values/dimens.xml3
-rw-r--r--java/res/values/donottranslate-altchars.xml10
-rw-r--r--java/res/values/donottranslate.xml92
-rw-r--r--java/res/values/strings.xml221
-rw-r--r--java/res/xml-xlarge/kbd_key_styles.xml4
-rw-r--r--java/res/xml-xlarge/kbd_symbols.xml8
-rw-r--r--java/res/xml-xlarge/kbd_symbols_shift.xml4
-rw-r--r--java/res/xml/prefs.xml13
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java14
-rw-r--r--java/src/com/android/inputmethod/keyboard/LatinKeyboard.java26
-rw-r--r--java/src/com/android/inputmethod/latin/CandidateView.java120
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java213
-rw-r--r--java/src/com/android/inputmethod/latin/Settings.java27
-rw-r--r--java/src/com/android/inputmethod/latin/Suggest.java53
-rw-r--r--java/src/com/android/inputmethod/latin/SuggestedWords.java124
-rw-r--r--java/src/com/android/inputmethod/latin/UserDictionary.java20
-rw-r--r--java/src/com/android/inputmethod/voice/VoiceIMEConnector.java16
82 files changed, 515 insertions, 482 deletions
diff --git a/java/res/drawable-land-mdpi/key_hint_at_holo.9.png b/java/res/drawable-land-mdpi/key_hint_at_holo.9.png
index 627e7a0ee..d1ea313c0 100644
--- a/java/res/drawable-land-mdpi/key_hint_at_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_at_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png
index 9569217ae..786bbc5de 100644
--- a/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_at_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png
index 89c5aae85..a14623dc0 100644
--- a/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_exclamation_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.png
index 932bcb99b..ce52d3a02 100644
--- a/java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_exclamation_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_question_holo.9.png b/java/res/drawable-land-mdpi/key_hint_question_holo.9.png
index 8373b69d1..2b71d744f 100644
--- a/java/res/drawable-land-mdpi/key_hint_question_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_question_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png
index a9eaeea33..041336832 100644
--- a/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_question_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png
index 01a3a9a36..486e5e19d 100644
--- a/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_quote_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.png
index 7cba264c2..49770314f 100644
--- a/java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_quote_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-land-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-land-mdpi/key_hint_underline_holo.9.png
index a95a575e5..06f3efb7e 100644
--- a/java/res/drawable-land-mdpi/key_hint_underline_holo.9.png
+++ b/java/res/drawable-land-mdpi/key_hint_underline_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png
index 8002da2c5..4e1465568 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png
index 506feece7..98461371b 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png
index 9c34ccc5c..01a913942 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
index f33e4cb0c..024f57614 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
index f6882c0bb..072b9d7ce 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
index e86eea71b..12ebc9bef 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png
index a8375d432..15053ba8d 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_popup_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_popup_normal.9.png
index b4a50f282..73fdba459 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_popup_normal.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_light_popup_normal.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png
index 47188652a..ae3ada1a1 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png
index dc41d58ce..2ba416fcf 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/hint_popup_holo.9.png b/java/res/drawable-mdpi/hint_popup_holo.9.png
index c409cea00..cfa17fd5f 100644
--- a/java/res/drawable-mdpi/hint_popup_holo.9.png
+++ b/java/res/drawable-mdpi/hint_popup_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_at_holo.9.png b/java/res/drawable-mdpi/key_hint_at_holo.9.png
index 627e7a0ee..d1ea313c0 100644
--- a/java/res/drawable-mdpi/key_hint_at_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_at_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-mdpi/key_hint_at_large_holo.9.png
index 9569217ae..786bbc5de 100644
--- a/java/res/drawable-mdpi/key_hint_at_large_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_at_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png
index 89c5aae85..a14623dc0 100644
--- a/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png
index 932bcb99b..ce52d3a02 100644
--- a/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_question_holo.9.png b/java/res/drawable-mdpi/key_hint_question_holo.9.png
index 8373b69d1..2b71d744f 100644
--- a/java/res/drawable-mdpi/key_hint_question_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_question_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-mdpi/key_hint_question_large_holo.9.png
index a9eaeea33..041336832 100644
--- a/java/res/drawable-mdpi/key_hint_question_large_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_question_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-mdpi/key_hint_quote_holo.9.png
index 01a3a9a36..486e5e19d 100644
--- a/java/res/drawable-mdpi/key_hint_quote_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_quote_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png
index 7cba264c2..49770314f 100644
--- a/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-mdpi/key_hint_underline_holo.9.png
index a95a575e5..06f3efb7e 100644
--- a/java/res/drawable-mdpi/key_hint_underline_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_underline_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png
index bef74c184..dbe1134cd 100644
--- a/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png
+++ b/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_background_holo.9.png b/java/res/drawable-mdpi/keyboard_background_holo.9.png
index 0ea57c09e..34149a482 100644
--- a/java/res/drawable-mdpi/keyboard_background_holo.9.png
+++ b/java/res/drawable-mdpi/keyboard_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png
index 8cfd7cf57..8c6ce6c8b 100644
--- a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_holo.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_holo.9.png
index c5d938dc4..da192a638 100644
--- a/java/res/drawable-mdpi/keyboard_popup_panel_background_holo.9.png
+++ b/java/res/drawable-mdpi/keyboard_popup_panel_background_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/mic_slash_holo.png b/java/res/drawable-mdpi/mic_slash_holo.png
index 8108b6e13..fc4108fef 100644
--- a/java/res/drawable-mdpi/mic_slash_holo.png
+++ b/java/res/drawable-mdpi/mic_slash_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ok_cancel_holo.9.png b/java/res/drawable-mdpi/ok_cancel_holo.9.png
index 5eb078c70..b6f121654 100644
--- a/java/res/drawable-mdpi/ok_cancel_holo.9.png
+++ b/java/res/drawable-mdpi/ok_cancel_holo.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level0_holo.png b/java/res/drawable-mdpi/speak_now_level0_holo.png
index 2a4fbd839..29ec1b127 100644
--- a/java/res/drawable-mdpi/speak_now_level0_holo.png
+++ b/java/res/drawable-mdpi/speak_now_level0_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level1_holo.png b/java/res/drawable-mdpi/speak_now_level1_holo.png
index dd35b1826..df5d2fae3 100644
--- a/java/res/drawable-mdpi/speak_now_level1_holo.png
+++ b/java/res/drawable-mdpi/speak_now_level1_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level2_holo.png b/java/res/drawable-mdpi/speak_now_level2_holo.png
index e3e42c458..1e95ae6e9 100644
--- a/java/res/drawable-mdpi/speak_now_level2_holo.png
+++ b/java/res/drawable-mdpi/speak_now_level2_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level3_holo.png b/java/res/drawable-mdpi/speak_now_level3_holo.png
index 7cf104e1f..3c6afd1a4 100644
--- a/java/res/drawable-mdpi/speak_now_level3_holo.png
+++ b/java/res/drawable-mdpi/speak_now_level3_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level4_holo.png b/java/res/drawable-mdpi/speak_now_level4_holo.png
index baad6ca58..e3100c783 100644
--- a/java/res/drawable-mdpi/speak_now_level4_holo.png
+++ b/java/res/drawable-mdpi/speak_now_level4_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level5_holo.png b/java/res/drawable-mdpi/speak_now_level5_holo.png
index 34c161eaf..4bc840505 100644
--- a/java/res/drawable-mdpi/speak_now_level5_holo.png
+++ b/java/res/drawable-mdpi/speak_now_level5_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/speak_now_level6_holo.png b/java/res/drawable-mdpi/speak_now_level6_holo.png
index e6b26d139..76bad8dbd 100644
--- a/java/res/drawable-mdpi/speak_now_level6_holo.png
+++ b/java/res/drawable-mdpi/speak_now_level6_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_delete_holo.png b/java/res/drawable-mdpi/sym_keyboard_delete_holo.png
index 9f1bfe87f..d1d2d7660 100644
--- a/java/res/drawable-mdpi/sym_keyboard_delete_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_delete_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num0_holo.png b/java/res/drawable-mdpi/sym_keyboard_num0_holo.png
index 2bb2a8bb9..aa96c1722 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num0_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num0_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num1_holo.png b/java/res/drawable-mdpi/sym_keyboard_num1_holo.png
index 0e0553723..ee4b7ae0d 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num1_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num1_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num2_holo.png b/java/res/drawable-mdpi/sym_keyboard_num2_holo.png
index 3b2a55004..e84dcbc5e 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num2_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num2_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num3_holo.png b/java/res/drawable-mdpi/sym_keyboard_num3_holo.png
index 0d829bfd9..55f04c0f2 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num3_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num3_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num4_holo.png b/java/res/drawable-mdpi/sym_keyboard_num4_holo.png
index d676a1c16..18a744a66 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num4_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num4_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num5_holo.png b/java/res/drawable-mdpi/sym_keyboard_num5_holo.png
index d47f2d5f4..348f1a9b5 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num5_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num5_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num6_holo.png b/java/res/drawable-mdpi/sym_keyboard_num6_holo.png
index 8e9138e9b..b94baa084 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num6_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num6_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num7_holo.png b/java/res/drawable-mdpi/sym_keyboard_num7_holo.png
index 7453b6b6c..f6561415f 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num7_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num7_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num8_holo.png b/java/res/drawable-mdpi/sym_keyboard_num8_holo.png
index b59885f7e..21884c8a0 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num8_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num8_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_num9_holo.png b/java/res/drawable-mdpi/sym_keyboard_num9_holo.png
index db465f755..3d09fc683 100644
--- a/java/res/drawable-mdpi/sym_keyboard_num9_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_num9_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png b/java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png
index 32f736c31..d92c44935 100644
--- a/java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png b/java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png
index 4fe9e6ae6..0792549bb 100644
--- a/java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_return_holo.png b/java/res/drawable-mdpi/sym_keyboard_return_holo.png
index 695a163c8..91122a8d1 100644
--- a/java/res/drawable-mdpi/sym_keyboard_return_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_return_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_holo.png b/java/res/drawable-mdpi/sym_keyboard_shift_holo.png
index 8f5db5da1..8678642dd 100644
--- a/java/res/drawable-mdpi/sym_keyboard_shift_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_shift_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png
index 0305827ba..836365bf8 100644
--- a/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_smiley_holo.png b/java/res/drawable-mdpi/sym_keyboard_smiley_holo.png
index 302ea0f05..46b2f41c7 100644
--- a/java/res/drawable-mdpi/sym_keyboard_smiley_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_smiley_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_space_holo.png b/java/res/drawable-mdpi/sym_keyboard_space_holo.png
index ec21a4fd8..952c4ee0c 100644
--- a/java/res/drawable-mdpi/sym_keyboard_space_holo.png
+++ b/java/res/drawable-mdpi/sym_keyboard_space_holo.png
Binary files differ
diff --git a/java/res/layout/candidate.xml b/java/res/layout/candidate.xml
index 37179d2af..f2c4126b3 100644
--- a/java/res/layout/candidate.xml
+++ b/java/res/layout/candidate.xml
@@ -23,6 +23,7 @@
android:layout_width="match_parent"
android:layout_height="@dimen/candidate_strip_height"
android:orientation="horizontal"
+ android:paddingRight="@dimen/candidate_padding"
>
<ImageView
android:id="@+id/candidate_divider"
@@ -37,13 +38,23 @@
android:id="@+id/candidate_word"
android:layout_width="wrap_content"
android:layout_height="@dimen/candidate_strip_height"
- android:minWidth="@dimen/candidate_min_touchable_width"
+ android:minWidth="@dimen/candidate_min_width"
android:textSize="@dimen/candidate_text_size"
android:textColor="@color/candidate_normal"
android:background="@drawable/btn_candidate"
android:focusable="true"
android:clickable="true"
android:gravity="center_vertical|center_horizontal"
- android:paddingLeft="12dip"
- android:paddingRight="12dip" />
+ android:paddingLeft="@dimen/candidate_padding" />
+ <TextView
+ android:id="@+id/candidate_debug_info"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ android:textSize="10dip"
+ android:textColor="#ff808080"
+ android:focusable="false"
+ android:clickable="false"
+ android:gravity="bottom"
+ android:paddingLeft="4dip" />
</LinearLayout>
diff --git a/java/res/values-xlarge/bools.xml b/java/res/values-xlarge/bools.xml
index abacfa18b..9fb670c54 100644
--- a/java/res/values-xlarge/bools.xml
+++ b/java/res/values-xlarge/bools.xml
@@ -21,6 +21,7 @@
<!-- Whether or not Popup on key press is enabled by default -->
<bool name="default_popup_preview">false</bool>
<bool name="config_enable_show_settings_key_option">false</bool>
+ <bool name="config_enable_show_subtype_settings">false</bool>
<bool name="config_enable_show_voice_key_option">false</bool>
<bool name="config_candidate_highlight_font_color_enabled">false</bool>
</resources>
diff --git a/java/res/values-xlarge/dimens.xml b/java/res/values-xlarge/dimens.xml
index dbdfa9631..07d5f09bd 100644
--- a/java/res/values-xlarge/dimens.xml
+++ b/java/res/values-xlarge/dimens.xml
@@ -44,5 +44,7 @@
<dimen name="candidate_strip_height">46dip</dimen>
<dimen name="candidate_strip_padding">15.0mm</dimen>
+ <dimen name="candidate_min_width">0.3in</dimen>
+ <dimen name="candidate_padding">12dip</dimen>
<dimen name="candidate_text_size">22dip</dimen>
</resources>
diff --git a/java/res/values/bools.xml b/java/res/values/bools.xml
index 84b0fe182..8742676ad 100644
--- a/java/res/values/bools.xml
+++ b/java/res/values/bools.xml
@@ -31,6 +31,7 @@
<bool name="default_recorrection_enabled">true</bool>
<bool name="config_long_press_comma_for_settings_enabled">true</bool>
<bool name="config_enable_show_settings_key_option">true</bool>
+ <bool name="config_enable_show_subtype_settings">true</bool>
<bool name="config_enable_show_voice_key_option">true</bool>
<bool name="config_candidate_highlight_font_color_enabled">true</bool>
</resources>
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index 456d9ad4d..0bb0e337d 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -32,14 +32,14 @@
<integer name="config_long_press_key_timeout">400</integer>
<integer name="config_long_press_shift_key_timeout">1200</integer>
<integer name="config_multi_tap_key_timeout">800</integer>
- <string-array name="auto_complete_threshold_values">
- <!-- Off, When auto completing setting is Off, this value is not used. -->
+ <string-array name="auto_correction_threshold_values">
+ <!-- Off, When auto correction setting is Off, this value is not used. -->
<item></item>
<!-- Modest : Suggestion whose normalized score is greater than this value
- will be subject to auto-completion. -->
+ will be subject to auto-correction. -->
<item>0.22</item>
<!-- Aggressive : Suggestion whose normalized score is greater than this value
- will be subject to auto-completion. -->
+ will be subject to auto-correction. -->
<item>0</item>
</string-array>
</resources>
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index 27d324bd8..41d638440 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -49,6 +49,8 @@
<dimen name="candidate_strip_height">42dip</dimen>
<dimen name="candidate_strip_fading_edge_length">63dip</dimen>
<dimen name="candidate_strip_padding">0dip</dimen>
+ <dimen name="candidate_min_width">0.3in</dimen>
+ <dimen name="candidate_padding">0dip</dimen>
<dimen name="candidate_text_size">18dip</dimen>
<dimen name="spacebar_vertical_correction">4dip</dimen>
<!-- If the screen height in landscape is larger than the below value, then the keyboard
@@ -57,5 +59,4 @@
<dimen name="bubble_pointer_offset">22dip</dimen>
<dimen name="key_hysteresis_distance">0.05in</dimen>
- <dimen name="candidate_min_touchable_width">0.3in</dimen>
</resources>
diff --git a/java/res/values/donottranslate-altchars.xml b/java/res/values/donottranslate-altchars.xml
index 41c498ee3..de4250edf 100644
--- a/java/res/values/donottranslate-altchars.xml
+++ b/java/res/values/donottranslate-altchars.xml
@@ -43,4 +43,14 @@
<string name="alternates_for_scandinavia_row2_11"></string>
<string name="alternates_for_cyrillic_e"></string>
<string name="alternates_for_cyrillic_soft_sign"></string>
+ <!-- popular web domains for the locale - most popular, displayed on the keyboard -->
+ <string name="popular_domain_0">".com"</string>
+ <!-- popular web domains for the locale - item 1, displayed in the popup -->
+ <string name="popular_domain_1">".net"</string>
+ <!-- popular web domains for the locale - item 2, displayed in the popup -->
+ <string name="popular_domain_2">".org"</string>
+ <!-- popular web domains for the locale - item 3, displayed in the popup -->
+ <string name="popular_domain_3">".gov"</string>
+ <!-- popular web domains for the locale - item 4, displayed in the popup -->
+ <string name="popular_domain_4">".edu"</string>
</resources>
diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml
index 453e188ff..57037290a 100644
--- a/java/res/values/donottranslate.xml
+++ b/java/res/values/donottranslate.xml
@@ -27,31 +27,93 @@
<!-- Option values to show/hide the settings key in onscreen keyboard -->
<!-- Automatically decide to show or hide the settings key -->
- <string name="settings_key_mode_auto" translatable="false">0</string>
+ <string name="settings_key_mode_auto">0</string>
<!-- Always show the settings key -->
- <string name="settings_key_mode_always_show" translatable="false">1</string>
+ <string name="settings_key_mode_always_show">1</string>
<!-- Always hide the settings key -->
- <string name="settings_key_mode_always_hide" translatable="false">2</string>
+ <string name="settings_key_mode_always_hide">2</string>
+ <!-- Array of the settings key mode values -->
+ <string-array name="settings_key_modes_values">
+ <item>@string/settings_key_mode_auto</item>
+ <item>@string/settings_key_mode_always_show</item>
+ <item>@string/settings_key_mode_always_hide</item>
+ </string-array>
+ <!-- Array of the settings key modes -->
+ <string-array name="settings_key_modes">
+ <item>@string/settings_key_mode_auto_name</item>
+ <item>@string/settings_key_mode_always_show_name</item>
+ <item>@string/settings_key_mode_always_hide_name</item>
+ </string-array>
<!-- Always show the suggestion strip -->
- <string name="prefs_suggestion_visibility_show_value" translatable="false">0</string>
+ <string name="prefs_suggestion_visibility_show_value">0</string>
<!-- Show the suggestion strip only on portrait mode -->
- <string name="prefs_suggestion_visibility_show_only_portrait_value" translatable="false">1</string>
+ <string name="prefs_suggestion_visibility_show_only_portrait_value">1</string>
<!-- Always hide the suggestion strip -->
- <string name="prefs_suggestion_visibility_hide_value" translatable="false">2</string>
+ <string name="prefs_suggestion_visibility_hide_value">2</string>
<!-- Default value of the visibility of the suggestion strip -->
- <string name="prefs_suggestion_visibility_default_value" translatable="false">0</string>
+ <string name="prefs_suggestion_visibility_default_value">0</string>
+ <!-- Option to show/hide the suggestion strip -->
+ <string-array name="prefs_suggestion_visibility_values">
+ <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-array name="prefs_suggestion_visibilities">
+ <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>
+
+ <string name="auto_correction_threshold_mode_index_off">0</string>
+ <string name="auto_correction_threshold_mode_index_modest">1</string>
+ <string name="auto_correction_threshold_mode_index_aggeressive">2</string>
+ <string-array name="auto_correction_threshold_mode_indexes">
+ <item>@string/auto_correction_threshold_mode_index_off</item>
+ <item>@string/auto_correction_threshold_mode_index_modest</item>
+ <item>@string/auto_correction_threshold_mode_index_aggeressive</item>
+ </string-array>
+ <string-array name="auto_correction_threshold_modes">
+ <item>@string/auto_correction_threshold_mode_off</item>
+ <item>@string/auto_correction_threshold_mode_modest</item>
+ <item>@string/auto_correction_threshold_mode_aggeressive</item>
+ </string-array>
+
+ <string name="voice_mode_main">0</string>
+ <string name="voice_mode_symbols">1</string>
+ <string name="voice_mode_off">2</string>
+ <string-array name="voice_input_modes_values">
+ <item>@string/voice_mode_main</item>
+ <item>@string/voice_mode_symbols</item>
+ <item>@string/voice_mode_off</item>
+ </string-array>
+ <!-- Array of Voice Input modes -->
+ <string-array name="voice_input_modes">
+ <item>@string/voice_input_modes_main_keyboard</item>
+ <item>@string/voice_input_modes_symbols_keyboard</item>
+ <item>@string/voice_input_modes_off</item>
+ </string-array>
+ <!-- Array of Voice Input modes summary -->
+ <string-array name="voice_input_modes_summary">
+ <item>@string/voice_input_modes_summary_main_keyboard</item>
+ <item>@string/voice_input_modes_summary_symbols_keyboard</item>
+ <item>@string/voice_input_modes_summary_off</item>
+ </string-array>
+
+ <!-- Title for Latin keyboard debug settings activity / dialog -->
+ <string name="english_ime_debug_settings">Android keyboard Debug settings</string>
+ <string name="prefs_debug_mode">Debug Mode</string>
<!-- Keyboard theme names -->
- <string name="layout_basic" translatable="false">Basic</string>
- <string name="layout_high_contrast" translatable="false">Basic (High Contrast)</string>
- <string name="layout_stone_bold" translatable="false">Stone (bold)</string>
- <string name="layout_stone_normal" translatable="false">Stone (normal)</string>
- <string name="layout_gingerbread" translatable="false">Gingerbread</string>
- <string name="layout_honeycomb" translatable="false">Honeycomb</string>
+ <string name="layout_basic">Basic</string>
+ <string name="layout_high_contrast">Basic (High Contrast)</string>
+ <string name="layout_stone_bold">Stone (bold)</string>
+ <string name="layout_stone_normal">Stone (normal)</string>
+ <string name="layout_gingerbread">Gingerbread</string>
+ <string name="layout_honeycomb">Honeycomb</string>
<!-- For keyboard theme switcher dialog -->
- <string-array name="keyboard_layout_modes" translatable="false">
+ <string-array name="keyboard_layout_modes">
<item>@string/layout_basic</item>
<item>@string/layout_high_contrast</item>
<item>@string/layout_stone_normal</item>
@@ -59,7 +121,7 @@
<item>@string/layout_gingerbread</item>
<item>@string/layout_honeycomb</item>
</string-array>
- <string-array name="keyboard_layout_modes_values" translatable="false">
+ <string-array name="keyboard_layout_modes_values">
<item>0</item>
<item>1</item>
<item>2</item>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index da315df80..c244ad214 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -34,182 +34,54 @@
<!-- Option to control whether or not to show a popup with a larger font on each key press. -->
<string name="popup_on_keypress">Popup on keypress</string>
- <!-- Option to enable using nearby keys when correcting/predicting -->
- <string name="hit_correction">Correct typing errors</string>
-
- <!-- Description for hit_correction -->
- <string name="hit_correction_summary">Enable input error correction</string>
-
- <!-- Option to enable using nearby keys when correcting/predicting in landscape-->
- <string name="hit_correction_land">Landscape input errors</string>
-
- <!-- Description for hit_correction in landscape -->
- <string name="hit_correction_land_summary">Enable input error correction</string>
-
- <!-- Option to automatically correct word on hitting space -->
- <string name="auto_correction">Word suggestions</string>
-
- <!-- Description for auto_correction -->
- <string name="auto_correction_summary">Automatically correct the previous word</string>
-
- <!-- Option to enable text prediction -->
- <string name="prediction">Word suggestions</string>
<!-- Category title for text prediction -->
<string name="prediction_category">Word suggestion settings</string>
- <!-- Description for text prediction -->
- <string name="prediction_summary">Enable auto completion while typing</string>
-
- <!-- Dialog title for auto complete choices -->
- <string name="auto_complete_dialog_title">Auto completion</string>
-
- <!-- Option to enable text prediction in landscape -->
- <string name="prediction_landscape">Increase text field size</string>
- <!-- Description for text prediction -->
- <string name="prediction_landscape_summary">Hide word suggestions in landscape view</string>
<!-- Option to enable auto capitalization of sentences -->
<string name="auto_cap">Auto-capitalization</string>
- <!-- Description for auto cap -->
- <string name="auto_cap_summary">Capitalize the start of a sentence</string>
- <!-- Option to enable auto punctuate -->
- <string name="auto_punctuate">Auto-punctuate</string>
- <!-- Description for auto punctuate -->
- <string name="auto_punctuate_summary"></string>
-
+
<!-- Option to enable quick fixes -->
<string name="quick_fixes">Quick fixes</string>
<!-- Description for quick fixes -->
<string name="quick_fixes_summary">Corrects commonly typed mistakes</string>
-
+
<!-- Option to enable showing suggestions -->
<string name="prefs_show_suggestions">Show suggestions</string>
<!-- Description for show suggestions -->
<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 -->
- <string-array name="settings_key_modes_values" translatable="false">
- <item>@string/settings_key_mode_auto</item>
- <item>@string/settings_key_mode_always_show</item>
- <item>@string/settings_key_mode_always_hide</item>
- </string-array>
<!-- Option to automatically decide to show/hide the settings key -->
<string name="settings_key_mode_auto_name">Automatic</string>
<!-- Option to always show the settings key -->
<string name="settings_key_mode_always_show_name">Always show</string>
<!-- Option to always hide the settings key -->
<string name="settings_key_mode_always_hide_name">Always hide</string>
- <!-- Array of the settings key modes -->
- <string-array name="settings_key_modes">
- <item>@string/settings_key_mode_auto_name</item>
- <item>@string/settings_key_mode_always_show_name</item>
- <item>@string/settings_key_mode_always_hide_name</item>
- </string-array>
-
- <!-- Option to decide the auto completion threshold score -->
- <!-- Option to enable auto completion -->
- <string name="auto_complete">Auto-complete</string>
- <!-- Description for auto completion -->
- <string name="auto_complete_summary">Spacebar and punctuation automatically insert highlighted word</string>
- <string name="auto_completion_threshold_mode_value_off" translatable="false">0</string>
- <string name="auto_completion_threshold_mode_value_modest" translatable="false">1</string>
- <string name="auto_completion_threshold_mode_value_aggeressive" translatable="false">2</string>
- <string-array name="auto_completion_threshold_mode_values" translatable="false">
- <item>@string/auto_completion_threshold_mode_value_off</item>
- <item>@string/auto_completion_threshold_mode_value_modest</item>
- <item>@string/auto_completion_threshold_mode_value_aggeressive</item>
- </string-array>
- <!-- Option to disable auto completion. -->
- <string name="auto_completion_threshold_mode_off">Off</string>
+
+ <!-- Option to decide the auto correction threshold score -->
+ <!-- Option to enable auto correction -->
+ <string name="auto_correction">Auto correction</string>
+ <!-- Description for auto correction -->
+ <string name="auto_correction_summary">Spacebar and punctuation automatically insert highlighted word</string>
+ <!-- Option to disable auto correction. -->
+ <string name="auto_correction_threshold_mode_off">Off</string>
<!-- Option to use modest auto completion. -->
- <string name="auto_completion_threshold_mode_modest">Modest</string>
+ <string name="auto_correction_threshold_mode_modest">Modest</string>
<!-- Option to use aggressive auto completion. -->
- <string name="auto_completion_threshold_mode_aggeressive">Aggressive</string>
- <string-array name="auto_completion_threshold_modes">
- <item>@string/auto_completion_threshold_mode_off</item>
- <item>@string/auto_completion_threshold_mode_modest</item>
- <item>@string/auto_completion_threshold_mode_aggeressive</item>
- </string-array>
+ <string name="auto_correction_threshold_mode_aggeressive">Aggressive</string>
<!-- Option to enable bigram completion -->
<string name="bigram_suggestion">Bigram Suggestions</string>
<!-- Description for auto completion -->
<string name="bigram_suggestion_summary">Use previous word to improve suggestion</string>
- <!-- Array of prediction modes -->
- <string-array name="prediction_modes">
- <item>None</item>
- <item>Basic</item>
- <item>Advanced</item>
- </string-array>
-
- <!-- Don't translate -->
- <string name="prediction_none" translatable="false">0</string>
- <!-- Don't translate -->
- <string name="prediction_basic" translatable="false">1</string>
- <!-- Don't translate -->
- <string name="prediction_full" translatable="false">2</string>
-
- <string-array name="prediction_modes_values" translatable="false">
- <item>@string/prediction_none</item>
- <item>@string/prediction_basic</item>
- <item>@string/prediction_full</item>
- </string-array>
-
<!-- Indicates that a word has been added to the dictionary -->
<string name="added_word"><xliff:g id="word">%s</xliff:g> : Saved</string>
- <!-- Tip to long press on keys -->
- <string name="tip_long_press">Hold a key down to see accents (ø, ö, etc.)</string>
- <!-- Tip to dismiss keyboard -->
- <string name="tip_dismiss">Press the back key \u21B6 to close the keyboard at any point</string>
- <!-- Tip to press ?123 to access numbers and symbols -->
- <string name="tip_access_symbols">Access numbers and symbols</string>
- <!-- Tip to long press on typed word to add to dictionary -->
- <string name="tip_add_to_dictionary">Press and hold the left-most word to add it to the dictionary
- </string>
-
- <!-- Instruction to touch the bubble to continue -->
- <string name="touch_to_continue">Touch this hint to continue »</string>
-
- <!-- Instruction to touch the bubble to start typing -->
- <string name="touch_to_finish">Touch here to close this hint and start typing!</string>
-
- <!-- Tutorial tip 1 - The keyboard opens any time you touch a text field -->
- <string name="tip_to_open_keyboard"><b>The keyboard opens any time you touch a text field</b></string>
-
- <!-- Tutorial tip 2 - Touch and hold a key to view accents (examples) -->
- <string name="tip_to_view_accents"><b>Touch &amp; hold a key to view accents\n(ø, ö, ô, ó, and so on)</b>
- </string>
-
- <!-- Tutorial tip 3 - How to switch to number/symbol keyboard -->
- <string name="tip_to_open_symbols"><b>Switch to numbers and symbols by touching this key</b></string>
-
- <!-- Tutorial tip 4 - How to switch back to alphabet keyboard -->
- <string name="tip_to_close_symbols"><b>Go back to letters by touching this key again</b></string>
-
- <!-- Tutorial tip 5 - How to launch keyboard settings -->
- <string name="tip_to_launch_settings"><b>Touch &amp; hold this key to change keyboard settings, like auto complete</b></string>
-
- <!-- Tutorial tip 6 - Done with the tutorial -->
- <string name="tip_to_start_typing"><b>Try it!</b></string>
-
-
<!-- Label for soft enter key when it performs GO action. Must be short to fit on key! -->
<string name="label_go_key">Go</string>
<!-- Label for soft enter key when it performs NEXT action. Must be short to fit on key! -->
@@ -308,62 +180,14 @@
<!-- Preferences item for enabling speech input -->
<string name="voice_input">Voice input</string>
- <!-- Array of Voice Input modes -->
- <string-array name="voice_input_modes">
- <item>On main keyboard</item>
- <item>On symbols keyboard</item>
- <item>Off</item>
- </string-array>
-
- <!-- Don't translate -->
- <string name="voice_mode_main" translatable="false">0</string>
- <!-- Don't translate -->
- <string name="voice_mode_symbols" translatable="false">1</string>
- <!-- Don't translate -->
- <string name="voice_mode_off" translatable="false">2</string>
-
- <string-array name="voice_input_modes_values" translatable="false">
- <item>@string/voice_mode_main</item>
- <item>@string/voice_mode_symbols</item>
- <item>@string/voice_mode_off</item>
- </string-array>
-
- <!-- Array of Voice Input modes summary -->
- <string-array name="voice_input_modes_summary">
- <item>Mic on main keyboard</item>
- <item>Mic on symbols keyboard</item>
- <item>Voice input is disabled</item>
- </string-array>
-
- <!-- Press the "enter" key after the user speaks. Option on settings.-->
- <string name="auto_submit">Auto submit after voice</string>
-
- <!-- Press the "enter" key after the user speaks. Summary of option in settings.-->
- <string name="auto_submit_summary">Automatically press enter when searching or going to the next field.</string>
-
- <!-- IME Tutorial screen (ROMAN) --><skip />
- <!-- appears above image showing the user to click on a TextView to show the IME -->
- <string name="open_the_keyboard"><font size="17"><b>Open the keyboard\n</b></font><font size="3">\n</font>Touch any text field.</string>
-
- <!-- appears above the image showing the back button used to close the keyboard -->
- <string name="close_the_keyboard"><font size="17"><b>Close the keyboard\n</b></font><font size="3">\n</font>Press the Back key.</string>
-
- <!-- appears above image showing how to use touch and hold -->
- <string name="touch_and_hold"><font size="17"><b>Touch \u0026 hold a key for options\n</b></font><font size="3">\n</font>Access punctuation and accents.</string>
-
- <!-- appears above image showing how to access keyboard settings -->
- <string name="keyboard_settings"><font size="17"><b>Keyboard settings\n</b></font><font size="3">\n</font>Touch \u0026 hold the <b>\?123\</b> key.</string>
-
- <!-- popular web domains for the locale - most popular, displayed on the keyboard -->
- <string name="popular_domain_0">".com"</string>
- <!-- popular web domains for the locale - item 1, displayed in the popup -->
- <string name="popular_domain_1">".net"</string>
- <!-- popular web domains for the locale - item 2, displayed in the popup -->
- <string name="popular_domain_2">".org"</string>
- <!-- popular web domains for the locale - item 3, displayed in the popup -->
- <string name="popular_domain_3">".gov"</string>
- <!-- popular web domains for the locale - item 4, displayed in the popup -->
- <string name="popular_domain_4">".edu"</string>
+ <!-- Voice Input modes -->
+ <string name="voice_input_modes_main_keyboard">On main keyboard</string>
+ <string name="voice_input_modes_symbols_keyboard">On symbols keyboard</string>
+ <string name="voice_input_modes_off">Off</string>
+ <!-- Voice Input modes summary -->
+ <string name="voice_input_modes_summary_main_keyboard">Mic on main keyboard</string>
+ <string name="voice_input_modes_summary_symbols_keyboard">Mic on symbols keyboard</string>
+ <string name="voice_input_modes_summary_off">Voice input is disabled</string>
<!-- Menu item for launching Input method picker -->
<string name="selectInputMethod">Select input method</string>
@@ -391,8 +215,6 @@
<!-- Description for keyboard theme switcher -->
<string name="keyboard_layout">Keyboard Theme</string>
- <string name="subtype_mode_keyboard">keyboard</string>
- <string name="subtype_mode_voice">voice</string>
<string name="subtype_mode_cs_keyboard">Czech Keyboard</string>
<string name="subtype_mode_da_keyboard">Danish Keyboard</string>
<string name="subtype_mode_de_keyboard">German Keyboard</string>
@@ -428,9 +250,6 @@
<string name="subtype_mode_zh_CN_voice">Chinese (China) Voice</string>
<string name="subtype_mode_zh_TW_voice">Chinese (Taiwan) 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>
<!-- Title of an option for usability study mode -->
<string name="prefs_usability_study_mode">Usability Study Mode</string>
</resources>
diff --git a/java/res/xml-xlarge/kbd_key_styles.xml b/java/res/xml-xlarge/kbd_key_styles.xml
index 8a1f6ffc6..9ff3340b8 100644
--- a/java/res/xml-xlarge/kbd_key_styles.xml
+++ b/java/res/xml-xlarge/kbd_key_styles.xml
@@ -153,9 +153,9 @@
latin:isSticky="true" />
<key-style
latin:styleName="comKeyStyle"
- latin:keyLabel=".com"
+ latin:keyLabel="@string/popular_domain_0"
latin:keyLabelOption="fontNormal"
- latin:keyOutputText=".com"
+ latin:keyOutputText="@string/popular_domain_0"
latin:keyHintIcon="@drawable/hint_popup_holo"
latin:popupKeyboard="@xml/popup_domains" />
</merge>
diff --git a/java/res/xml-xlarge/kbd_symbols.xml b/java/res/xml-xlarge/kbd_symbols.xml
index f5d0c4c47..f78af8abd 100644
--- a/java/res/xml-xlarge/kbd_symbols.xml
+++ b/java/res/xml-xlarge/kbd_symbols.xml
@@ -137,10 +137,6 @@
latin:popupKeyboard="@xml/kbd_popup_template"
latin:popupCharacters="≥»›" />
<Key
- latin:keyLabel="[" />
- <Key
- latin:keyLabel="]" />
- <Key
latin:keyLabel="="
latin:popupKeyboard="@xml/kbd_popup_template"
latin:popupCharacters="≠≈" />
@@ -149,6 +145,10 @@
<Key
latin:keyLabel=";" />
<Key
+ latin:keyLabel="," />
+ <Key
+ latin:keyLabel="." />
+ <Key
latin:keyLabel="!"
latin:popupKeyboard="@xml/kbd_popup_template"
latin:popupCharacters="¡" />
diff --git a/java/res/xml-xlarge/kbd_symbols_shift.xml b/java/res/xml-xlarge/kbd_symbols_shift.xml
index 99f48ebd9..f3fbf36d1 100644
--- a/java/res/xml-xlarge/kbd_symbols_shift.xml
+++ b/java/res/xml-xlarge/kbd_symbols_shift.xml
@@ -121,9 +121,9 @@
<Key
latin:keyLabel="â„…" />
<Key
- latin:keyLabel="," />
+ latin:keyLabel="[" />
<Key
- latin:keyLabel="." />
+ latin:keyLabel="]" />
<Key
latin:keyLabel="¡" />
<Key
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index 85612b049..47b3b4589 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -73,6 +73,7 @@
<!-- TODO: Filter subtypes by IME in SubtypeEnabler -->
<!-- TODO: Maybe use this only for phone? -->
<PreferenceScreen
+ android:key="subtype_settings"
android:title="@string/language_selection_title"
android:summary="@string/language_selection_summary">
<intent
@@ -102,13 +103,13 @@
/>
<ListPreference
- android:key="auto_completion_threshold"
- android:title="@string/auto_complete"
- android:summary="@string/auto_complete_summary"
+ android:key="auto_correction_threshold"
+ android:title="@string/auto_correction"
+ android:summary="@string/auto_correction_summary"
android:persistent="true"
- android:entryValues="@array/auto_completion_threshold_mode_values"
- android:entries="@array/auto_completion_threshold_modes"
- android:defaultValue="@string/auto_completion_threshold_mode_value_modest"
+ android:entryValues="@array/auto_correction_threshold_mode_indexes"
+ android:entries="@array/auto_correction_threshold_modes"
+ android:defaultValue="@string/auto_correction_threshold_mode_index_modest"
/>
<CheckBoxPreference
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 51e878c88..cd57db360 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -74,9 +74,9 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
private int mMode = KeyboardId.MODE_TEXT; /* default value */
private int mImeOptions;
private boolean mIsSymbols;
- /** mIsAutoCompletionActive indicates that auto completed word will be input instead of
+ /** mIsAutoCorrectionActive indicates that auto corrected word will be input instead of
* what user actually typed. */
- private boolean mIsAutoCompletionActive;
+ private boolean mIsAutoCorrectionActive;
private boolean mVoiceKeyEnabled;
private boolean mVoiceButtonOnPrimary;
private int mSymbolsModeState = SYMBOLS_MODE_STATE_NONE;
@@ -197,7 +197,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
Log.d(TAG, "keyboard cache size=" + mKeyboardCache.size() + ": HIT id=" + id);
}
- keyboard.onAutoCompletionStateChanged(mIsAutoCompletionActive);
+ keyboard.onAutoCorrectionStateChanged(mIsAutoCorrectionActive);
keyboard.setShifted(false);
return keyboard;
}
@@ -617,12 +617,12 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
? mInputView.getColorScheme() : KeyboardView.COLOR_SCHEME_WHITE;
}
- public void onAutoCompletionStateChanged(boolean isAutoCompletion) {
- if (isAutoCompletion != mIsAutoCompletionActive) {
+ public void onAutoCorrectionStateChanged(boolean isAutoCorrection) {
+ if (isAutoCorrection != mIsAutoCorrectionActive) {
LatinKeyboardView keyboardView = getInputView();
- mIsAutoCompletionActive = isAutoCompletion;
+ mIsAutoCorrectionActive = isAutoCorrection;
keyboardView.invalidateKey(((LatinKeyboard) keyboardView.getKeyboard())
- .onAutoCompletionStateChanged(isAutoCompletion));
+ .onAutoCorrectionStateChanged(isAutoCorrection));
}
}
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
index 8087f030e..0a42857ff 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
@@ -45,7 +45,7 @@ public class LatinKeyboard extends Keyboard {
private static final int SPACE_LED_LENGTH_PERCENT = 80;
private Drawable mShiftLockPreviewIcon;
- private Drawable mSpaceAutoCompletionIndicator;
+ private Drawable mSpaceAutoCorrectionIndicator;
private final Drawable mButtonArrowLeftIcon;
private final Drawable mButtonArrowRightIcon;
private final int mSpaceBarTextShadowColor;
@@ -89,7 +89,7 @@ public class LatinKeyboard extends Keyboard {
}
mShiftLockPreviewIcon = res.getDrawable(R.drawable.sym_keyboard_feedback_shift_locked);
setDefaultBounds(mShiftLockPreviewIcon);
- mSpaceAutoCompletionIndicator = res.getDrawable(R.drawable.sym_keyboard_space_led);
+ mSpaceAutoCorrectionIndicator = res.getDrawable(R.drawable.sym_keyboard_space_led);
mButtonArrowLeftIcon = res.getDrawable(R.drawable.sym_keyboard_language_arrows_left);
mButtonArrowRightIcon = res.getDrawable(R.drawable.sym_keyboard_language_arrows_right);
sSpacebarVerticalCorrection = res.getDimensionPixelOffset(
@@ -100,22 +100,22 @@ public class LatinKeyboard extends Keyboard {
/**
* @return a key which should be invalidated.
*/
- public Key onAutoCompletionStateChanged(boolean isAutoCompletion) {
- updateSpaceBarForLocale(isAutoCompletion);
+ public Key onAutoCorrectionStateChanged(boolean isAutoCorrection) {
+ updateSpaceBarForLocale(isAutoCorrection);
return mSpaceKey;
}
- private void updateSpaceBarForLocale(boolean isAutoCompletion) {
+ private void updateSpaceBarForLocale(boolean isAutoCorrection) {
final Resources res = mRes;
// If application locales are explicitly selected.
if (SubtypeSwitcher.getInstance().needsToDisplayLanguage()) {
mSpaceKey.setIcon(new BitmapDrawable(res,
- drawSpaceBar(OPACITY_FULLY_OPAQUE, isAutoCompletion)));
+ drawSpaceBar(OPACITY_FULLY_OPAQUE, isAutoCorrection)));
} else {
// sym_keyboard_space_led can be shared with Black and White symbol themes.
- if (isAutoCompletion) {
+ if (isAutoCorrection) {
mSpaceKey.setIcon(new BitmapDrawable(res,
- drawSpaceBar(OPACITY_FULLY_OPAQUE, isAutoCompletion)));
+ drawSpaceBar(OPACITY_FULLY_OPAQUE, isAutoCorrection)));
} else {
mSpaceKey.setIcon(mSpaceIcon);
}
@@ -173,7 +173,7 @@ public class LatinKeyboard extends Keyboard {
}
@SuppressWarnings("unused")
- private Bitmap drawSpaceBar(int opacity, boolean isAutoCompletion) {
+ private Bitmap drawSpaceBar(int opacity, boolean isAutoCorrection) {
final int width = mSpaceKey.mWidth;
final int height = mSpaceIcon.getIntrinsicHeight();
final Bitmap buffer = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
@@ -212,13 +212,13 @@ public class LatinKeyboard extends Keyboard {
}
// Draw the spacebar icon at the bottom
- if (isAutoCompletion) {
+ if (isAutoCorrection) {
final int iconWidth = width * SPACE_LED_LENGTH_PERCENT / 100;
- final int iconHeight = mSpaceAutoCompletionIndicator.getIntrinsicHeight();
+ final int iconHeight = mSpaceAutoCorrectionIndicator.getIntrinsicHeight();
int x = (width - iconWidth) / 2;
int y = height - iconHeight;
- mSpaceAutoCompletionIndicator.setBounds(x, y, x + iconWidth, y + iconHeight);
- mSpaceAutoCompletionIndicator.draw(canvas);
+ mSpaceAutoCorrectionIndicator.setBounds(x, y, x + iconWidth, y + iconHeight);
+ mSpaceAutoCorrectionIndicator.draw(canvas);
} else {
final int iconWidth = mSpaceIcon.getIntrinsicWidth();
final int iconHeight = mSpaceIcon.getIntrinsicHeight();
diff --git a/java/src/com/android/inputmethod/latin/CandidateView.java b/java/src/com/android/inputmethod/latin/CandidateView.java
index 03ba1192b..784077a76 100644
--- a/java/src/com/android/inputmethod/latin/CandidateView.java
+++ b/java/src/com/android/inputmethod/latin/CandidateView.java
@@ -43,11 +43,9 @@ import android.widget.PopupWindow;
import android.widget.TextView;
import java.util.ArrayList;
-import java.util.List;
public class CandidateView extends LinearLayout implements OnClickListener, OnLongClickListener {
private LatinIME mService;
- private final ArrayList<CharSequence> mSuggestions = new ArrayList<CharSequence>();
private final ArrayList<View> mWords = new ArrayList<View>();
private final TextView mPreviewText;
@@ -64,27 +62,12 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
private final CharacterStyle mInvertedForegroundColorSpan;
private final CharacterStyle mInvertedBackgroundColorSpan;
- private boolean mShowingCompletions;
+ private SuggestedWords mSuggestions = SuggestedWords.EMPTY;
private boolean mShowingAutoCorrectionInverted;
-
private boolean mShowingAddToDictionary;
private final UiHandler mHandler = new UiHandler();
- private static class UpdateSuggestionsArgs {
- public final List<CharSequence> mSuggestions;
- public final boolean mCompletions;
- public final boolean mTypedWordValid;
- public final boolean mHaveMinimalSuggestion;
- public UpdateSuggestionsArgs(List<CharSequence> suggestions, boolean completions,
- boolean typedWordValid, boolean haveMinimalSuggestion) {
- mSuggestions = suggestions;
- mCompletions = completions;
- mTypedWordValid = typedWordValid;
- mHaveMinimalSuggestion = haveMinimalSuggestion;
- }
- }
-
private class UiHandler extends Handler {
private static final int MSG_HIDE_PREVIEW = 0;
private static final int MSG_UPDATE_SUGGESTION = 1;
@@ -99,9 +82,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
hidePreview();
break;
case MSG_UPDATE_SUGGESTION:
- UpdateSuggestionsArgs args = (UpdateSuggestionsArgs)msg.obj;
- updateSuggestions(args.mSuggestions, args.mCompletions, args.mTypedWordValid,
- args.mHaveMinimalSuggestion);
+ updateSuggestions((SuggestedWords)msg.obj);
break;
}
}
@@ -115,11 +96,9 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
removeMessages(MSG_HIDE_PREVIEW);
}
- public void postUpdateSuggestions(List<CharSequence> suggestions, boolean completions,
- boolean typedWordValid, boolean haveMinimalSuggestion) {
+ public void postUpdateSuggestions(SuggestedWords suggestions) {
cancelUpdateSuggestions();
- sendMessageDelayed(obtainMessage(MSG_UPDATE_SUGGESTION, new UpdateSuggestionsArgs(
- suggestions, completions, typedWordValid, haveMinimalSuggestion)),
+ sendMessageDelayed(obtainMessage(MSG_UPDATE_SUGGESTION, suggestions),
DELAY_UPDATE_SUGGESTION);
}
@@ -167,7 +146,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
tv.setOnLongClickListener(this);
ImageView divider = (ImageView)v.findViewById(R.id.candidate_divider);
// Do not display divider of first candidate.
- divider.setVisibility(i == 0 ? View.GONE : View.VISIBLE);
+ divider.setVisibility(i == 0 ? GONE : VISIBLE);
mWords.add(v);
}
@@ -182,44 +161,35 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
mService = listener;
}
- public void setSuggestions(List<CharSequence> suggestions, boolean completions,
- boolean typedWordValid, boolean haveMinimalSuggestion) {
- // Don't update suggestions when there is zero or only one suggestion found.
- if (suggestions != null && suggestions.size() <= 1)
+ public void setSuggestions(SuggestedWords suggestions) {
+ // Don't update suggestions when there is only one suggestion found.
+ // Empty (size zero) suggestions will be passed in order to clear candidate view.
+ if (suggestions == null || suggestions.size() == 1)
return;
if (mShowingAutoCorrectionInverted) {
- mHandler.postUpdateSuggestions(suggestions, completions, typedWordValid,
- haveMinimalSuggestion);
+ mHandler.postUpdateSuggestions(suggestions);
} else {
- updateSuggestions(suggestions, completions, typedWordValid, haveMinimalSuggestion);
+ updateSuggestions(suggestions);
}
}
- private void updateSuggestions(List<CharSequence> suggestions, boolean completions,
- boolean typedWordValid, boolean haveMinimalSuggestion) {
+ private void updateSuggestions(SuggestedWords suggestions) {
clear();
- if (suggestions != null) {
- int insertCount = Math.min(suggestions.size(), MAX_SUGGESTIONS);
- for (CharSequence suggestion : suggestions) {
- mSuggestions.add(suggestion);
- if (--insertCount == 0)
- break;
- }
- }
-
- final int count = mSuggestions.size();
- boolean existsAutoCompletion = false;
-
+ mSuggestions = suggestions;
+ final int count = suggestions.size();
+ final Object[] debugInfo = suggestions.mDebugInfo;
for (int i = 0; i < count; i++) {
- CharSequence suggestion = mSuggestions.get(i);
- if (suggestion == null) continue;
- final int wordLength = suggestion.length();
+ CharSequence word = suggestions.getWord(i);
+ if (word == null) continue;
+ final int wordLength = word.length();
final View v = mWords.get(i);
final TextView tv = (TextView)v.findViewById(R.id.candidate_word);
+ final TextView dv = (TextView)v.findViewById(R.id.candidate_debug_info);
tv.setTextColor(mColorNormal);
- if (haveMinimalSuggestion
- && ((i == 1 && !typedWordValid) || (i == 0 && typedWordValid))) {
+ if (suggestions.mHasMinimalSuggestion
+ && ((i == 1 && !suggestions.mTypedWordValid) ||
+ (i == 0 && suggestions.mTypedWordValid))) {
final CharacterStyle style;
if (mConfigCandidateHighlightFontColorEnabled) {
style = BOLD_SPAN;
@@ -227,10 +197,9 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
} else {
style = UNDERLINE_SPAN;
}
- final Spannable word = new SpannableString(suggestion);
- word.setSpan(style, 0, wordLength, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
- suggestion = word;
- existsAutoCompletion = true;
+ final Spannable spannedWord = new SpannableString(word);
+ spannedWord.setSpan(style, 0, wordLength, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+ word = spannedWord;
} else if (i != 0 || (wordLength == 1 && count > 1)) {
// HACK: even if i == 0, we use mColorOther when this
// suggestion's length is 1
@@ -239,16 +208,18 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
if (mConfigCandidateHighlightFontColorEnabled)
tv.setTextColor(mColorOther);
}
- tv.setText(suggestion);
+ tv.setText(word);
tv.setClickable(true);
+ if (debugInfo != null && i < debugInfo.length && debugInfo[i] != null
+ && !TextUtils.isEmpty(debugInfo[i].toString())) {
+ dv.setText(debugInfo[i].toString());
+ dv.setVisibility(VISIBLE);
+ } else {
+ dv.setVisibility(GONE);
+ }
addView(v);
}
- mShowingCompletions = completions;
- // TODO: Move this call back to LatinIME
- if (mConfigCandidateHighlightFontColorEnabled)
- mService.onAutoCompletionStateChanged(existsAutoCompletion);
-
scrollTo(0, getScrollY());
requestLayout();
}
@@ -267,15 +238,19 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
mShowingAutoCorrectionInverted = true;
}
+ public boolean isConfigCandidateHighlightFontColorEnabled() {
+ return mConfigCandidateHighlightFontColorEnabled;
+ }
+
public boolean isShowingAddToDictionaryHint() {
return mShowingAddToDictionary;
}
public void showAddToDictionaryHint(CharSequence word) {
- ArrayList<CharSequence> suggestions = new ArrayList<CharSequence>();
- suggestions.add(word);
- suggestions.add(getContext().getText(R.string.hint_add_to_dictionary));
- setSuggestions(suggestions, false, false, false);
+ SuggestedWords.Builder builder = new SuggestedWords.Builder()
+ .addWord(word)
+ .addWord(getContext().getText(R.string.hint_add_to_dictionary));
+ setSuggestions(builder.build());
mShowingAddToDictionary = true;
// Disable R.string.hint_add_to_dictionary button
TextView tv = (TextView)getChildAt(1).findViewById(R.id.candidate_word);
@@ -288,14 +263,11 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
return true;
}
- /* package */ List<CharSequence> getSuggestions() {
+ public SuggestedWords getSuggestions() {
return mSuggestions;
}
public void clear() {
- // Don't call mSuggestions.clear() because it's being used for logging
- // in LatinIME.pickSuggestionManually().
- mSuggestions.clear();
mShowingAddToDictionary = false;
mShowingAutoCorrectionInverted = false;
removeAllViews();
@@ -337,7 +309,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
@Override
public boolean onLongClick(View view) {
int index = (Integer) view.getTag();
- CharSequence word = mSuggestions.get(index);
+ CharSequence word = mSuggestions.getWord(index);
if (word.length() < 2)
return false;
addToDictionary(word);
@@ -347,12 +319,12 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
@Override
public void onClick(View view) {
int index = (Integer) view.getTag();
- CharSequence word = mSuggestions.get(index);
+ CharSequence word = mSuggestions.getWord(index);
if (mShowingAddToDictionary && index == 0) {
addToDictionary(word);
} else {
- if (!mShowingCompletions) {
- TextEntryState.acceptedSuggestion(mSuggestions.get(0), word);
+ if (!mSuggestions.mIsApplicationSpecifiedCompletions) {
+ TextEntryState.acceptedSuggestion(mSuggestions.getWord(0), word);
}
mService.pickSuggestionManually(index, word);
}
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 99b6c739a..243306a35 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -63,6 +63,7 @@ import android.view.ViewParent;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.CompletionInfo;
+import android.view.inputmethod.CorrectionInfo;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.ExtractedText;
import android.view.inputmethod.ExtractedTextRequest;
@@ -77,7 +78,6 @@ import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.List;
import java.util.Locale;
/**
@@ -120,7 +120,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
private View mCandidateViewContainer;
private CandidateView mCandidateView;
private Suggest mSuggest;
- private CompletionInfo[] mCompletions;
+ private CompletionInfo[] mApplicationSpecifiedCompletions;
private AlertDialog mOptionsDialog;
@@ -142,7 +142,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
private CharSequence mBestWord;
private boolean mPredicting;
private boolean mPredictionOn;
- private boolean mCompletionOn;
+ private boolean mApplicationSpecifiedCompletionOn;
private boolean mHasDictionary;
private boolean mAutoSpace;
private boolean mJustAddedAutoSpace;
@@ -162,7 +162,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// Keep track of the last selection range to decide if we need to show word alternatives
private int mLastSelectionStart;
private int mLastSelectionEnd;
- private List<CharSequence> mSuggestPuncList;
+ private SuggestedWords mSuggestPuncList;
// Input type is such that we should not auto-correct
private boolean mInputTypeNoAutoCorrect;
@@ -212,7 +212,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
return mChosenWord;
}
- public abstract List<CharSequence> getAlternatives();
+ public abstract SuggestedWords.Builder getAlternatives();
}
public class TypedWordAlternatives extends WordAlternatives {
@@ -233,7 +233,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
@Override
- public List<CharSequence> getAlternatives() {
+ public SuggestedWords.Builder getAlternatives() {
return getTypedSuggestions(word);
}
}
@@ -394,7 +394,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
int[] dictionaries = getDictionary(orig);
mSuggest = new Suggest(this, dictionaries);
- loadAndSetAutoCompletionThreshold(prefs);
+ loadAndSetAutoCorrectionThreshold(prefs);
if (mUserDictionary != null) mUserDictionary.close();
mUserDictionary = new UserDictionary(this, locale);
if (mContactsDictionary == null) {
@@ -520,8 +520,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
mVoiceConnector.resetVoiceStates(isPasswordVariation(variation));
mInputTypeNoAutoCorrect = false;
mPredictionOn = false;
- mCompletionOn = false;
- mCompletions = null;
+ mApplicationSpecifiedCompletionOn = false;
+ mApplicationSpecifiedCompletions = null;
mEnteredText = null;
final int mode;
@@ -580,7 +580,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
if ((attribute.inputType & InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE) != 0) {
mPredictionOn = false;
- mCompletionOn = isFullscreenMode();
+ mApplicationSpecifiedCompletionOn = isFullscreenMode();
}
break;
default:
@@ -603,7 +603,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
setCandidatesViewShownInternal(isCandidateStripVisible(),
false /* needsInputViewShown */ );
- updateSuggestions();
+ // Delay updating suggestions because keyboard input view may not be shown at this point.
+ mHandler.postUpdateSuggestions();
// If the dictionary is not big enough, don't auto correct
mHasDictionary = mSuggest.hasMainDictionary();
@@ -633,7 +634,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (isSuggestionShown() && isPredictionOn()) {
// First get the cursor position. This is required by setOldSuggestions(), so that
// it can pass the correct range to setComposingRegion(). At this point, we don't
- // have valid values for mLastSelectionStart/Stop because onUpdateSelection() has
+ // have valid values for mLastSelectionStart/End because onUpdateSelection() has
// not been called yet.
ExtractedTextRequest etr = new ExtractedTextRequest();
etr.token = 0; // anything is fine here
@@ -655,7 +656,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
super.onFinishInput();
LatinImeLogger.commit();
- onAutoCompletionStateChanged(false);
+ mKeyboardSwitcher.onAutoCorrectionStateChanged(false);
mVoiceConnector.flushVoiceInputLogs(mConfigurationChanging);
@@ -790,7 +791,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
@Override
public void hideWindow() {
LatinImeLogger.commit();
- onAutoCompletionStateChanged(false);
+ mKeyboardSwitcher.onAutoCorrectionStateChanged(false);
if (TRACE) Debug.stopMethodTracing();
if (mOptionsDialog != null && mOptionsDialog.isShowing()) {
@@ -804,27 +805,28 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
@Override
- public void onDisplayCompletions(CompletionInfo[] completions) {
+ public void onDisplayCompletions(CompletionInfo[] applicationSpecifiedCompletions) {
if (DEBUG) {
Log.i("foo", "Received completions:");
- for (int i=0; i<(completions != null ? completions.length : 0); i++) {
- Log.i("foo", " #" + i + ": " + completions[i]);
+ final int count = (applicationSpecifiedCompletions != null)
+ ? applicationSpecifiedCompletions.length : 0;
+ for (int i = 0; i < count; i++) {
+ Log.i("foo", " #" + i + ": " + applicationSpecifiedCompletions[i]);
}
}
- if (mCompletionOn) {
- mCompletions = completions;
- if (completions == null) {
+ if (mApplicationSpecifiedCompletionOn) {
+ mApplicationSpecifiedCompletions = applicationSpecifiedCompletions;
+ if (applicationSpecifiedCompletions == null) {
clearSuggestions();
return;
}
- List<CharSequence> stringList = new ArrayList<CharSequence>();
- for (int i = 0; i < completions.length; i++) {
- CompletionInfo ci = completions[i];
- if (ci != null) stringList.add(ci.getText());
- }
+ SuggestedWords.Builder builder = new SuggestedWords.Builder()
+ .setApplicationSpecifiedCompletions(applicationSpecifiedCompletions)
+ .setTypedWordValid(true)
+ .setHasMinimalSuggestion(true);
// When in fullscreen mode, show completions generated by the application
- setSuggestions(stringList, true, true, true);
+ setSuggestions(builder.build());
mBestWord = null;
setCandidatesViewShown(true);
}
@@ -1293,7 +1295,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
boolean pickedDefault = false;
// Handle separator
- InputConnection ic = getCurrentInputConnection();
+ final InputConnection ic = getCurrentInputConnection();
if (ic != null) {
ic.beginBatchEdit();
abortCorrection(false);
@@ -1338,7 +1340,11 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
CharSequence typedWord = mWord.getTypedWord();
TextEntryState.backToAcceptedDefault(typedWord);
if (!TextUtils.isEmpty(typedWord) && !typedWord.equals(mBestWord)) {
- // TODO: Will call InputConnection.commitCorrection() here.
+ if (ic != null) {
+ CorrectionInfo correctionInfo = new CorrectionInfo(
+ mLastSelectionEnd - typedWord.length(), typedWord, mBestWord);
+ ic.commitCorrection(correctionInfo);
+ }
if (mCandidateView != null)
mCandidateView.onAutoCorrectionInverted(mBestWord);
}
@@ -1382,7 +1388,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
private boolean isShowingPunctuationList() {
- return mSuggestPuncList.equals(mCandidateView.getSuggestions());
+ return mSuggestPuncList == mCandidateView.getSuggestions();
}
private boolean isSuggestionShown() {
@@ -1394,8 +1400,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
private boolean isCandidateStripVisible() {
boolean forceVisible = mCandidateView.isShowingAddToDictionaryHint()
|| TextEntryState.isCorrecting();
- return forceVisible || (isSuggestionShown()
- && (isPredictionOn() || mCompletionOn || isShowingPunctuationList()));
+ return forceVisible || (
+ isSuggestionShown() && (isPredictionOn() || mApplicationSpecifiedCompletionOn
+ || isShowingPunctuationList()));
}
public void switchToKeyboardView() {
@@ -1422,22 +1429,20 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
public void clearSuggestions() {
- setSuggestions(null, false, false, false);
+ setSuggestions(SuggestedWords.EMPTY);
}
- public void setSuggestions(
- List<CharSequence> suggestions,
- boolean completions,
- boolean typedWordValid,
- boolean haveMinimalSuggestion) {
-
+ public void setSuggestions(SuggestedWords words) {
if (mVoiceConnector.getAndResetIsShowingHint()) {
setCandidatesView(mCandidateViewContainer);
}
if (mCandidateView != null) {
- mCandidateView.setSuggestions(
- suggestions, completions, typedWordValid, haveMinimalSuggestion);
+ mCandidateView.setSuggestions(words);
+ if (mCandidateView.isConfigCandidateHighlightFontColorEnabled()) {
+ mKeyboardSwitcher.onAutoCorrectionStateChanged(
+ words.hasWordAboveAutoCorrectionScoreThreshold());
+ }
}
}
@@ -1457,16 +1462,15 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
showSuggestions(mWord);
}
- private List<CharSequence> getTypedSuggestions(WordComposer word) {
- List<CharSequence> stringList = mSuggest.getSuggestions(
- mKeyboardSwitcher.getInputView(), word, false, null);
- return stringList;
+ private SuggestedWords.Builder getTypedSuggestions(WordComposer word) {
+ return mSuggest.getSuggestedWordBuilder(mKeyboardSwitcher.getInputView(), word, null);
}
private void showCorrections(WordAlternatives alternatives) {
mKeyboardSwitcher.setPreferredLetters(null);
- List<CharSequence> stringList = alternatives.getAlternatives();
- showSuggestions(stringList, alternatives.getOriginalWord(), false, false);
+ SuggestedWords.Builder builder = alternatives.getAlternatives();
+ builder.setTypedWordValid(false).setHasMinimalSuggestion(false);
+ showSuggestions(builder.build(), alternatives.getOriginalWord());
}
private void showSuggestions(WordComposer word) {
@@ -1474,10 +1478,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// TODO Maybe need better way of retrieving previous word
CharSequence prevWord = EditingUtils.getPreviousWord(getCurrentInputConnection(),
mWordSeparators);
- List<CharSequence> stringList = mSuggest.getSuggestions(
- mKeyboardSwitcher.getInputView(), word, false, prevWord);
- // long stopTime = System.currentTimeMillis(); // TIME MEASUREMENT!
- // Log.d("LatinIME","Suggest Total Time - " + (stopTime - startTime));
+ SuggestedWords.Builder builder = mSuggest.getSuggestedWordBuilder(
+ mKeyboardSwitcher.getInputView(), word, prevWord);
int[] nextLettersFrequencies = mSuggest.getNextLettersFrequencies();
mKeyboardSwitcher.setPreferredLetters(nextLettersFrequencies);
@@ -1497,15 +1499,15 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
correctionAvailable &= !word.isMostlyCaps();
correctionAvailable &= !TextEntryState.isCorrecting();
- showSuggestions(stringList, typedWord, typedWordValid, correctionAvailable);
+ builder.setTypedWordValid(typedWordValid).setHasMinimalSuggestion(correctionAvailable);
+ showSuggestions(builder.build(), typedWord);
}
- private void showSuggestions(List<CharSequence> stringList, CharSequence typedWord,
- boolean typedWordValid, boolean correctionAvailable) {
- setSuggestions(stringList, false, typedWordValid, correctionAvailable);
- if (stringList.size() > 0) {
- if (correctionAvailable && !typedWordValid && stringList.size() > 1) {
- mBestWord = stringList.get(1);
+ private void showSuggestions(SuggestedWords suggestedWords, CharSequence typedWord) {
+ setSuggestions(suggestedWords);
+ if (suggestedWords.size() > 0) {
+ if (suggestedWords.hasAutoCorrectionWord()) {
+ mBestWord = suggestedWords.getWord(1);
} else {
mBestWord = typedWord;
}
@@ -1534,7 +1536,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
public void pickSuggestionManually(int index, CharSequence suggestion) {
- List<CharSequence> suggestions = mCandidateView.getSuggestions();
+ SuggestedWords suggestions = mCandidateView.getSuggestions();
mVoiceConnector.flushAndLogAllTextModificationCounters(index, suggestion, mWordSeparators);
final boolean correcting = TextEntryState.isCorrecting();
@@ -1542,9 +1544,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (ic != null) {
ic.beginBatchEdit();
}
- if (mCompletionOn && mCompletions != null && index >= 0
- && index < mCompletions.length) {
- CompletionInfo ci = mCompletions[index];
+ if (mApplicationSpecifiedCompletionOn && mApplicationSpecifiedCompletions != null
+ && index >= 0 && index < mApplicationSpecifiedCompletions.length) {
+ CompletionInfo ci = mApplicationSpecifiedCompletions[index];
if (ic != null) {
ic.commitCompletion(ci);
}
@@ -1565,7 +1567,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// Word separators are suggested before the user inputs something.
// So, LatinImeLogger logs "" as a user's input.
LatinImeLogger.logOnManualSuggestion(
- "", suggestion.toString(), index, suggestions);
+ "", suggestion.toString(), index, suggestions.mWords);
final char primaryCode = suggestion.charAt(0);
onKey(primaryCode, new int[]{primaryCode}, KeyboardView.NOT_A_TOUCH_COORDINATE,
KeyboardView.NOT_A_TOUCH_COORDINATE);
@@ -1583,7 +1585,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
addToBigramDictionary(suggestion, 1);
}
LatinImeLogger.logOnManualSuggestion(mComposing.toString(), suggestion.toString(),
- index, suggestions);
+ index, suggestions.mWords);
TextEntryState.acceptedSuggestion(mComposing.toString(), suggestion);
// Follow it with a space
if (mAutoSpace && !correcting) {
@@ -1655,7 +1657,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
break;
}
}
- // If we didn't find a match, at least suggest completions
+ // If we didn't find a match, at least suggest corrections.
if (foundWord == null
&& (mSuggest.isValidWord(touching.mWord)
|| mSuggest.isValidWord(touching.mWord.toString().toLowerCase()))) {
@@ -1718,7 +1720,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
private void setPunctuationSuggestions() {
setCandidatesViewShown(isCandidateStripVisible());
- setSuggestions(mSuggestPuncList, false, false, false);
+ setSuggestions(mSuggestPuncList);
}
private void addToDictionaries(CharSequence suggestion, int frequencyDelta) {
@@ -2043,7 +2045,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
mAutoCorrectEnabled = isAutoCorrectEnabled(prefs);
mBigramSuggestionEnabled = mAutoCorrectEnabled && isBigramSuggestionEnabled(prefs);
- loadAndSetAutoCompletionThreshold(prefs);
+ loadAndSetAutoCorrectionThreshold(prefs);
mVoiceConnector.loadSettings(attribute, prefs);
@@ -2054,50 +2056,47 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
/**
- * load Auto completion threshold from SharedPreferences,
- * and modify mSuggest's threshold.
+ * Load Auto correction threshold from SharedPreferences, and modify mSuggest's threshold.
*/
- private void loadAndSetAutoCompletionThreshold(SharedPreferences sp) {
+ private void loadAndSetAutoCorrectionThreshold(SharedPreferences sp) {
// When mSuggest is not initialized, cannnot modify mSuggest's threshold.
if (mSuggest == null) return;
- // When auto completion setting is turned off, the threshold is ignored.
+ // When auto correction setting is turned off, the threshold is ignored.
if (!isAutoCorrectEnabled(sp)) return;
- final String currentAutoCompletionSetting = sp.getString(
- Settings.PREF_AUTO_COMPLETION_THRESHOLD,
- mResources.getString(R.string.auto_completion_threshold_mode_value_modest));
- final String[] autoCompletionThresholdValues = mResources.getStringArray(
- R.array.auto_complete_threshold_values);
- // When autoCompletionThreshold is greater than 1.0,
- // auto completion is virtually turned off.
- double autoCompletionThreshold = Double.MAX_VALUE;
+ final String currentAutoCorrectionSetting = sp.getString(
+ Settings.PREF_AUTO_CORRECTION_THRESHOLD,
+ mResources.getString(R.string.auto_correction_threshold_mode_index_modest));
+ final String[] autoCorrectionThresholdValues = mResources.getStringArray(
+ R.array.auto_correction_threshold_values);
+ // When autoCrrectionThreshold is greater than 1.0, auto correction is virtually turned off.
+ double autoCorrectionThreshold = Double.MAX_VALUE;
try {
- final int arrayIndex = Integer.valueOf(currentAutoCompletionSetting);
- if (arrayIndex >= 0 && arrayIndex < autoCompletionThresholdValues.length) {
- autoCompletionThreshold = Double.parseDouble(
- autoCompletionThresholdValues[arrayIndex]);
+ final int arrayIndex = Integer.valueOf(currentAutoCorrectionSetting);
+ if (arrayIndex >= 0 && arrayIndex < autoCorrectionThresholdValues.length) {
+ autoCorrectionThreshold = Double.parseDouble(
+ autoCorrectionThresholdValues[arrayIndex]);
}
} catch (NumberFormatException e) {
- // Whenever the threshold settings are correct,
- // never come here.
- autoCompletionThreshold = Double.MAX_VALUE;
- Log.w(TAG, "Cannot load auto completion threshold setting."
- + " currentAutoCompletionSetting: " + currentAutoCompletionSetting
- + ", autoCompletionThresholdValues: "
- + Arrays.toString(autoCompletionThresholdValues));
+ // Whenever the threshold settings are correct, never come here.
+ autoCorrectionThreshold = Double.MAX_VALUE;
+ Log.w(TAG, "Cannot load auto correction threshold setting."
+ + " currentAutoCorrectionSetting: " + currentAutoCorrectionSetting
+ + ", autoCorrectionThresholdValues: "
+ + Arrays.toString(autoCorrectionThresholdValues));
}
// TODO: This should be refactored :
- // setAutoCompleteThreshold should be called outside of this method.
- mSuggest.setAutoCompleteThreshold(autoCompletionThreshold);
+ // setAutoCorrectionThreshold should be called outside of this method.
+ mSuggest.setAutoCorrectionThreshold(autoCorrectionThreshold);
}
private boolean isAutoCorrectEnabled(SharedPreferences sp) {
- final String currentAutoCompletionSetting = sp.getString(
- Settings.PREF_AUTO_COMPLETION_THRESHOLD,
- mResources.getString(R.string.auto_completion_threshold_mode_value_modest));
- final String autoCompletionOff = mResources.getString(
- R.string.auto_completion_threshold_mode_value_off);
- return !currentAutoCompletionSetting.equals(autoCompletionOff);
+ final String currentAutoCorrectionSetting = sp.getString(
+ Settings.PREF_AUTO_CORRECTION_THRESHOLD,
+ mResources.getString(R.string.auto_correction_threshold_mode_index_modest));
+ final String autoCorrectionOff = mResources.getString(
+ R.string.auto_correction_threshold_mode_index_off);
+ return !currentAutoCorrectionSetting.equals(autoCorrectionOff);
}
private boolean isBigramSuggestionEnabled(SharedPreferences sp) {
@@ -2106,13 +2105,17 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
private void initSuggestPuncList() {
- mSuggestPuncList = new ArrayList<CharSequence>();
- mSuggestPuncs = mResources.getString(R.string.suggested_punctuations);
- if (mSuggestPuncs != null) {
- for (int i = 0; i < mSuggestPuncs.length(); i++) {
- mSuggestPuncList.add(mSuggestPuncs.subSequence(i, i + 1));
+ if (mSuggestPuncs != null || mSuggestPuncList != null)
+ return;
+ SuggestedWords.Builder builder = new SuggestedWords.Builder();
+ String puncs = mResources.getString(R.string.suggested_punctuations);
+ if (puncs != null) {
+ for (int i = 0; i < puncs.length(); i++) {
+ builder.addWord(puncs.subSequence(i, i + 1));
}
}
+ mSuggestPuncList = builder.build();
+ mSuggestPuncs = puncs;
}
private boolean isSuggestedPunctuation(int code) {
@@ -2167,7 +2170,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
p.println(" mPredicting=" + mPredicting);
p.println(" mAutoCorrectOn=" + mAutoCorrectOn);
p.println(" mAutoSpace=" + mAutoSpace);
- p.println(" mCompletionOn=" + mCompletionOn);
+ p.println(" mApplicationSpecifiedCompletionOn=" + mApplicationSpecifiedCompletionOn);
p.println(" TextEntryState.state=" + TextEntryState.getState());
p.println(" mSoundOn=" + mSoundOn);
p.println(" mVibrateOn=" + mVibrateOn);
@@ -2192,10 +2195,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
System.out.println("CPS = " + ((CPS_BUFFER_SIZE * 1000f) / total));
}
- public void onAutoCompletionStateChanged(boolean isAutoCompletion) {
- mKeyboardSwitcher.onAutoCompletionStateChanged(isAutoCompletion);
- }
-
@Override
public void onCurrentInputMethodSubtypeChanged(InputMethodSubtype subtype) {
SubtypeSwitcher.getInstance().updateSubtype(subtype);
diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java
index 9c7c5aa71..3f604a381 100644
--- a/java/src/com/android/inputmethod/latin/Settings.java
+++ b/java/src/com/android/inputmethod/latin/Settings.java
@@ -53,11 +53,12 @@ public class Settings extends PreferenceActivity
public static final String PREF_VOICE_SETTINGS_KEY = "voice_mode";
public static final String PREF_INPUT_LANGUAGE = "input_language";
public static final String PREF_SELECTED_LANGUAGES = "selected_languages";
+ public static final String PREF_SUBTYPES = "subtype_settings";
public static final String PREF_PREDICTION_SETTINGS_KEY = "prediction_settings";
public static final String PREF_QUICK_FIXES = "quick_fixes";
public static final String PREF_SHOW_SUGGESTIONS_SETTING = "show_suggestions_setting";
- public static final String PREF_AUTO_COMPLETION_THRESHOLD = "auto_completion_threshold";
+ public static final String PREF_AUTO_CORRECTION_THRESHOLD = "auto_correction_threshold";
public static final String PREF_BIGRAM_SUGGESTIONS = "bigram_suggestion";
// Dialog ids
@@ -66,7 +67,7 @@ public class Settings extends PreferenceActivity
private CheckBoxPreference mQuickFixes;
private ListPreference mVoicePreference;
private ListPreference mSettingsKeyPreference;
- private ListPreference mAutoCompletionThreshold;
+ private ListPreference mAutoCorrectionThreshold;
private CheckBoxPreference mBigramSuggestion;
private boolean mVoiceOn;
@@ -77,11 +78,11 @@ public class Settings extends PreferenceActivity
private boolean mOkClicked = false;
private String mVoiceModeOff;
- private void ensureConsistencyOfAutoCompletionSettings() {
- final String autoCompletionOff = getResources().getString(
- R.string.auto_completion_threshold_mode_value_off);
- final String currentSetting = mAutoCompletionThreshold.getValue();
- mBigramSuggestion.setEnabled(!currentSetting.equals(autoCompletionOff));
+ private void ensureConsistencyOfAutoCorrectionSettings() {
+ final String autoCorrectionOff = getResources().getString(
+ R.string.auto_correction_threshold_mode_index_off);
+ final String currentSetting = mAutoCorrectionThreshold.getValue();
+ mBigramSuggestion.setEnabled(!currentSetting.equals(autoCorrectionOff));
}
@Override
protected void onCreate(Bundle icicle) {
@@ -98,9 +99,9 @@ public class Settings extends PreferenceActivity
.equals(mVoiceModeOff));
mLogger = VoiceInputLogger.getLogger(this);
- mAutoCompletionThreshold = (ListPreference) findPreference(PREF_AUTO_COMPLETION_THRESHOLD);
+ mAutoCorrectionThreshold = (ListPreference) findPreference(PREF_AUTO_CORRECTION_THRESHOLD);
mBigramSuggestion = (CheckBoxPreference) findPreference(PREF_BIGRAM_SUGGESTIONS);
- ensureConsistencyOfAutoCompletionSettings();
+ ensureConsistencyOfAutoCorrectionSettings();
final boolean showSettingsKeyOption = getResources().getBoolean(
R.bool.config_enable_show_settings_key_option);
@@ -119,6 +120,12 @@ public class Settings extends PreferenceActivity
getPreferenceScreen().removePreference(
getPreferenceScreen().findPreference(PREF_VIBRATE_ON));
}
+
+ final boolean showSubtypeSettings = getResources().getBoolean(
+ R.bool.config_enable_show_subtype_settings);
+ if (!showSubtypeSettings) {
+ getPreferenceScreen().removePreference(findPreference(PREF_SUBTYPES));
+ }
}
@Override
@@ -155,7 +162,7 @@ public class Settings extends PreferenceActivity
showVoiceConfirmation();
}
}
- ensureConsistencyOfAutoCompletionSettings();
+ ensureConsistencyOfAutoCorrectionSettings();
mVoiceOn = !(prefs.getString(PREF_VOICE_SETTINGS_KEY, mVoiceModeOff)
.equals(mVoiceModeOff));
updateVoiceModeSummary();
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index a6df187e6..a30ec1587 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -25,12 +25,10 @@ import android.view.View;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.List;
/**
* This class loads a dictionary and provides a list of suggestions for a given sequence of
* characters. This includes corrections and completions.
- * @hide pending API Council Approval
*/
public class Suggest implements Dictionary.WordCallback {
@@ -83,7 +81,7 @@ public class Suggest implements Dictionary.WordCallback {
private boolean mAutoTextEnabled;
- private double mAutoCompleteThreshold;
+ private double mAutoCorrectionThreshold;
private int[] mPriorities = new int[mPrefMaxSuggestions];
private int[] mBigramPriorities = new int[PREF_MAX_BIGRAMS];
@@ -97,7 +95,6 @@ public class Suggest implements Dictionary.WordCallback {
ArrayList<CharSequence> mBigramSuggestions = new ArrayList<CharSequence>();
private ArrayList<CharSequence> mStringPool = new ArrayList<CharSequence>();
private boolean mHaveCorrection;
- private CharSequence mOriginalWord;
private String mLowerOriginalWord;
// TODO: Remove these member variables by passing more context to addWord() callback method
@@ -166,8 +163,8 @@ public class Suggest implements Dictionary.WordCallback {
mUserBigramDictionary = userBigramDictionary;
}
- public void setAutoCompleteThreshold(double threshold) {
- mAutoCompleteThreshold = threshold;
+ public void setAutoCorrectionThreshold(double threshold) {
+ mAutoCorrectionThreshold = threshold;
}
/**
@@ -191,15 +188,21 @@ public class Suggest implements Dictionary.WordCallback {
}
/**
- * Returns a list of words that match the list of character codes passed in.
- * This list will be overwritten the next time this function is called.
+ * Returns a object which represents suggested words that match the list of character codes
+ * passed in. This object contents will be overwritten the next time this function is called.
* @param view a view for retrieving the context for AutoText
* @param wordComposer contains what is currently being typed
* @param prevWordForBigram previous word (used only for bigram)
- * @return list of suggestions.
+ * @return suggested words object.
*/
- public List<CharSequence> getSuggestions(View view, WordComposer wordComposer,
- boolean includeTypedWordIfValid, CharSequence prevWordForBigram) {
+ public SuggestedWords getSuggestions(View view, WordComposer wordComposer,
+ CharSequence prevWordForBigram) {
+ return getSuggestedWordBuilder(view, wordComposer, prevWordForBigram).build();
+ }
+
+ // TODO: cleanup dictionaries looking up and suggestions building with SuggestedWords.Builder
+ public SuggestedWords.Builder getSuggestedWordBuilder(View view, WordComposer wordComposer,
+ CharSequence prevWordForBigram) {
LatinImeLogger.onStartSuggestion(prevWordForBigram);
mHaveCorrection = false;
mIsFirstCharCapitalized = wordComposer.isFirstCharCapitalized();
@@ -209,13 +212,13 @@ public class Suggest implements Dictionary.WordCallback {
Arrays.fill(mNextLettersFrequencies, 0);
// Save a lowercase version of the original word
- mOriginalWord = wordComposer.getTypedWord();
- if (mOriginalWord != null) {
- final String mOriginalWordString = mOriginalWord.toString();
- mOriginalWord = mOriginalWordString;
- mLowerOriginalWord = mOriginalWordString.toLowerCase();
+ CharSequence typedWord = wordComposer.getTypedWord();
+ if (typedWord != null) {
+ final String typedWordString = typedWord.toString();
+ typedWord = typedWordString;
+ mLowerOriginalWord = typedWordString.toLowerCase();
// Treating USER_TYPED as UNIGRAM suggestion for logging now.
- LatinImeLogger.onAddSuggestedWord(mOriginalWordString, Suggest.DIC_USER_TYPED,
+ LatinImeLogger.onAddSuggestedWord(typedWordString, Suggest.DIC_USER_TYPED,
Dictionary.DataType.UNIGRAM);
} else {
mLowerOriginalWord = "";
@@ -273,7 +276,7 @@ public class Suggest implements Dictionary.WordCallback {
mContactsDictionary.getWords(wordComposer, this, mNextLettersFrequencies);
}
- if (mSuggestions.size() > 0 && isValidWord(mOriginalWord)
+ if (mSuggestions.size() > 0 && isValidWord(typedWord)
&& (mCorrectionMode == CORRECTION_FULL
|| mCorrectionMode == CORRECTION_FULL_BIGRAM)) {
mHaveCorrection = true;
@@ -285,19 +288,19 @@ public class Suggest implements Dictionary.WordCallback {
// TODO: when the normalized score of the first suggestion is nearly equals to
// the normalized score of the second suggestion, behave less aggressive.
final double normalizedScore = Utils.calcNormalizedScore(
- mOriginalWord, mSuggestions.get(0), mPriorities[0]);
+ typedWord, mSuggestions.get(0), mPriorities[0]);
if (LatinImeLogger.sDBG) {
- Log.d(TAG, "Normalized " + mOriginalWord + "," + mSuggestions.get(0) + ","
+ Log.d(TAG, "Normalized " + typedWord + "," + mSuggestions.get(0) + ","
+ mPriorities[0] + normalizedScore
- + "(" + mAutoCompleteThreshold + ")");
+ + "(" + mAutoCorrectionThreshold + ")");
}
- if (normalizedScore >= mAutoCompleteThreshold) {
+ if (normalizedScore >= mAutoCorrectionThreshold) {
mHaveCorrection = true;
}
}
}
- if (mOriginalWord != null) {
- mSuggestions.add(0, mOriginalWord.toString());
+ if (typedWord != null) {
+ mSuggestions.add(0, typedWord.toString());
}
if (mAutoTextEnabled) {
int i = 0;
@@ -342,7 +345,7 @@ public class Suggest implements Dictionary.WordCallback {
}
}
removeDupes();
- return mSuggestions;
+ return new SuggestedWords.Builder().setWords(mSuggestions);
}
public int[] getNextLettersFrequencies() {
diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java
new file mode 100644
index 000000000..0bb7c66d1
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java
@@ -0,0 +1,124 @@
+/*
+ * 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.view.inputmethod.CompletionInfo;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class SuggestedWords {
+ public static final SuggestedWords EMPTY = new SuggestedWords(null, false, false, false, null);
+
+ public final List<CharSequence> mWords;
+ public final boolean mIsApplicationSpecifiedCompletions;
+ public final boolean mTypedWordValid;
+ public final boolean mHasMinimalSuggestion;
+ public final Object[] mDebugInfo;
+
+ private SuggestedWords(List<CharSequence> words, boolean isApplicationSpecifiedCompletions,
+ boolean typedWordValid, boolean hasMinamlSuggestion, Object[] debugInfo) {
+ if (words != null) {
+ mWords = words;
+ } else {
+ mWords = Collections.emptyList();
+ }
+ mIsApplicationSpecifiedCompletions = isApplicationSpecifiedCompletions;
+ mTypedWordValid = typedWordValid;
+ mHasMinimalSuggestion = hasMinamlSuggestion;
+ mDebugInfo = debugInfo;
+ }
+
+ public int size() {
+ return mWords.size();
+ }
+
+ public CharSequence getWord(int pos) {
+ return mWords.get(pos);
+ }
+
+ public boolean hasAutoCorrectionWord() {
+ return mHasMinimalSuggestion && size() > 1 && !mTypedWordValid;
+ }
+
+ public boolean hasWordAboveAutoCorrectionScoreThreshold() {
+ return mHasMinimalSuggestion && ((size() > 1 && !mTypedWordValid) || mTypedWordValid);
+ }
+
+ public static class Builder {
+ private List<CharSequence> mWords;
+ private boolean mIsCompletions;
+ private boolean mTypedWordVallid;
+ private boolean mHasMinimalSuggestion;
+ private Object[] mDebugInfo;
+
+ public Builder() {
+ // Nothing to do here.
+ }
+
+ public Builder setWords(List<CharSequence> words) {
+ mWords = words;
+ return this;
+ }
+
+ public Builder setDebugInfo(Object[] debuginfo) {
+ mDebugInfo = debuginfo;
+ return this;
+ }
+
+ public Builder addWord(int pos, CharSequence word) {
+ if (mWords == null)
+ mWords = new ArrayList<CharSequence>();
+ mWords.add(pos, word);
+ return this;
+ }
+
+ public Builder addWord(CharSequence word) {
+ if (mWords == null)
+ mWords = new ArrayList<CharSequence>();
+ mWords.add(word);
+ return this;
+ }
+
+ public Builder setApplicationSpecifiedCompletions(CompletionInfo[] infos) {
+ for (CompletionInfo info : infos)
+ addWord(info.getText());
+ mIsCompletions = true;
+ return this;
+ }
+
+ public Builder setTypedWordValid(boolean typedWordValid) {
+ mTypedWordVallid = typedWordValid;
+ return this;
+ }
+
+ public Builder setHasMinimalSuggestion(boolean hasMinamlSuggestion) {
+ mHasMinimalSuggestion = hasMinamlSuggestion;
+ return this;
+ }
+
+ public CharSequence getWord(int pos) {
+ return mWords.get(pos);
+ }
+
+ public SuggestedWords build() {
+ return new SuggestedWords(mWords, mIsCompletions, mTypedWordVallid,
+ mHasMinimalSuggestion, mDebugInfo);
+ }
+ }
+}
diff --git a/java/src/com/android/inputmethod/latin/UserDictionary.java b/java/src/com/android/inputmethod/latin/UserDictionary.java
index 7a94ae480..e03f56498 100644
--- a/java/src/com/android/inputmethod/latin/UserDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserDictionary.java
@@ -21,6 +21,7 @@ import android.content.ContentValues;
import android.content.Context;
import android.database.ContentObserver;
import android.database.Cursor;
+import android.net.Uri;
import android.provider.UserDictionary.Words;
public class UserDictionary extends ExpandableDictionary {
@@ -80,7 +81,7 @@ public class UserDictionary extends ExpandableDictionary {
* @TODO use a higher or float range for frequency
*/
@Override
- public synchronized void addWord(String word, int frequency) {
+ public synchronized void addWord(final String word, final int frequency) {
// Force load the dictionary here synchronously
if (getRequiresReload()) loadDictionaryAsync();
// Safeguard against adding long words. Can cause stack overflow.
@@ -99,7 +100,22 @@ public class UserDictionary extends ExpandableDictionary {
new Thread("addWord") {
@Override
public void run() {
- contentResolver.insert(Words.CONTENT_URI, values);
+ Cursor cursor = contentResolver.query(Words.CONTENT_URI, PROJECTION,
+ "word=? and ((locale IS NULL) or (locale=?))",
+ new String[] { word, mLocale }, null);
+ if (cursor != null && cursor.moveToFirst()) {
+ String locale = cursor.getString(cursor.getColumnIndex(Words.LOCALE));
+ // If locale is null, we will not override the entry.
+ if (locale != null && locale.equals(mLocale.toString())) {
+ long id = cursor.getLong(cursor.getColumnIndex(Words._ID));
+ Uri uri = Uri.withAppendedPath(Words.CONTENT_URI, Long.toString(id));
+ // Update the entry with new frequency value.
+ contentResolver.update(uri, values, null, null);
+ }
+ } else {
+ // Insert new entry.
+ contentResolver.insert(Words.CONTENT_URI, values);
+ }
}
}.start();
diff --git a/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java b/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java
index 2052d9348..c532a0baf 100644
--- a/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java
+++ b/java/src/com/android/inputmethod/voice/VoiceIMEConnector.java
@@ -22,6 +22,7 @@ import com.android.inputmethod.latin.LatinIME.UIHandler;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.SharedPreferencesCompat;
import com.android.inputmethod.latin.SubtypeSwitcher;
+import com.android.inputmethod.latin.SuggestedWords;
import android.app.AlertDialog;
import android.content.Context;
@@ -424,17 +425,20 @@ public class VoiceIMEConnector implements VoiceInput.UiListener {
if (mWordToSuggestions.containsKey(selectedWord)) {
mShowingVoiceSuggestions = true;
List<CharSequence> suggestions = mWordToSuggestions.get(selectedWord);
+ SuggestedWords.Builder builder = new SuggestedWords.Builder();
// If the first letter of touching is capitalized, make all the suggestions
// start with a capital letter.
if (Character.isUpperCase(touching.mWord.charAt(0))) {
- for (int i = 0; i < suggestions.size(); i++) {
- String origSugg = (String) suggestions.get(i);
- String capsSugg = origSugg.toUpperCase().charAt(0)
- + origSugg.subSequence(1, origSugg.length()).toString();
- suggestions.set(i, capsSugg);
+ for (CharSequence word : suggestions) {
+ String str = word.toString();
+ word = Character.toUpperCase(str.charAt(0)) + str.substring(1);
+ builder.addWord(word);
}
+ } else {
+ builder.setWords(suggestions);
}
- mContext.setSuggestions(suggestions, false, true, true);
+ builder.setTypedWordValid(true).setHasMinimalSuggestion(true);
+ mContext.setSuggestions(builder.build());
mContext.setCandidatesViewShown(true);
return true;
}