diff options
Diffstat (limited to 'java')
212 files changed, 648 insertions, 568 deletions
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_active_lxx_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_lxx_dark.9.png Binary files differindex 82e850c6b..bbdc41116 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_active_lxx_dark.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_active_lxx_dark.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_active_lxx_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..854c849cb --- /dev/null +++ b/java/res/drawable-hdpi/btn_keyboard_key_active_lxx_light.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png Binary files differindex e2b9e3d9c..33f7d8077 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_active_pressed_lxx_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_pressed_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..7a7e98297 --- /dev/null +++ b/java/res/drawable-hdpi/btn_keyboard_key_active_pressed_lxx_light.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_dark.9.png Binary files differindex 2e6489cf5..b8bb10f24 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_dark.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_dark.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..0802b11f8 --- /dev/null +++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_light.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_dark.9.png Binary files differindex 0b1482281..b1f543548 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_dark.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_dark.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..f0a89c524 --- /dev/null +++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_light.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png Binary files differnew file mode 100644 index 000000000..0ef8cc764 --- /dev/null +++ b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..45d586570 --- /dev/null +++ b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_light.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png Binary files differindex 4bf38fc35..bfc981edb 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..1b52bcc85 --- /dev/null +++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_light.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png Binary files differindex ea12c7776..fbb4f8c43 100644 --- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png +++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..1bc2a233f --- /dev/null +++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_light.9.png diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png Binary files differindex 9d6514bdd..e49efe5dc 100644 --- a/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png +++ b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_light.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..615a40a3d --- /dev/null +++ b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_light.9.png diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png Binary files differindex 8ad54f69d..a0511a1a1 100644 --- a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png +++ b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_light.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..c5871f699 --- /dev/null +++ b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_light.9.png diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_dark.9.png Binary files differindex f9dd3b8b1..c7b147f5f 100644 --- a/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_dark.9.png +++ b/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_dark.9.png diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_light.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..41b0a1b35 --- /dev/null +++ b/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_light.9.png diff --git a/java/res/drawable-hdpi/suggestions_strip_divider.png b/java/res/drawable-hdpi/suggestions_strip_divider_holo.png Binary files differindex 5d44d9ce5..5d44d9ce5 100644 --- a/java/res/drawable-hdpi/suggestions_strip_divider.png +++ b/java/res/drawable-hdpi/suggestions_strip_divider_holo.png diff --git a/java/res/drawable-hdpi/suggestions_strip_divider_lxx_dark.png b/java/res/drawable-hdpi/suggestions_strip_divider_lxx_dark.png Binary files differnew file mode 100644 index 000000000..68a2270a5 --- /dev/null +++ b/java/res/drawable-hdpi/suggestions_strip_divider_lxx_dark.png diff --git a/java/res/drawable-hdpi/suggestions_strip_divider_lxx_light.png b/java/res/drawable-hdpi/suggestions_strip_divider_lxx_light.png Binary files differnew file mode 100644 index 000000000..12485ef1a --- /dev/null +++ b/java/res/drawable-hdpi/suggestions_strip_divider_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_delete_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_delete_lxx_dark.png Binary files differindex 5f5eb3fe7..2e68b2016 100644 --- a/java/res/drawable-hdpi/sym_keyboard_delete_lxx_dark.png +++ b/java/res/drawable-hdpi/sym_keyboard_delete_lxx_dark.png diff --git a/java/res/drawable-hdpi/sym_keyboard_delete_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_delete_lxx_light.png Binary files differnew file mode 100644 index 000000000..e17d29715 --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_delete_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_done_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_done_lxx_light.png Binary files differnew file mode 100644 index 000000000..04eab599d --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_done_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_go_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_go_lxx_light.png Binary files differnew file mode 100644 index 000000000..189d609e1 --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_go_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_language_switch_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_language_switch_lxx_dark.png Binary files differindex edf9a20de..4fc82d6d4 100644 --- a/java/res/drawable-hdpi/sym_keyboard_language_switch_lxx_dark.png +++ b/java/res/drawable-hdpi/sym_keyboard_language_switch_lxx_dark.png diff --git a/java/res/drawable-hdpi/sym_keyboard_language_switch_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_language_switch_lxx_light.png Binary files differnew file mode 100644 index 000000000..1c7af2018 --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_language_switch_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_next_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_next_lxx_light.png Binary files differnew file mode 100644 index 000000000..70679b028 --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_next_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_previous_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_previous_lxx_light.png Binary files differnew file mode 100644 index 000000000..952dd4fd2 --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_previous_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_return_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_return_lxx_light.png Binary files differnew file mode 100644 index 000000000..9ab1a3f50 --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_return_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_search_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_search_lxx_light.png Binary files differnew file mode 100644 index 000000000..ec7062723 --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_search_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_send_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_send_lxx_light.png Binary files differnew file mode 100644 index 000000000..bbc5094c9 --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_send_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_settings_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_settings_lxx_dark.png Binary files differindex f2613023f..23eac1674 100644 --- a/java/res/drawable-hdpi/sym_keyboard_settings_lxx_dark.png +++ b/java/res/drawable-hdpi/sym_keyboard_settings_lxx_dark.png diff --git a/java/res/drawable-hdpi/sym_keyboard_settings_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_settings_lxx_light.png Binary files differnew file mode 100644 index 000000000..144b15b0c --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_settings_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_locked_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_shift_locked_lxx_light.png Binary files differnew file mode 100644 index 000000000..657f65acc --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_shift_locked_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_shift_lxx_dark.png Binary files differindex cb03e55a8..427f01468 100644 --- a/java/res/drawable-hdpi/sym_keyboard_shift_lxx_dark.png +++ b/java/res/drawable-hdpi/sym_keyboard_shift_lxx_dark.png diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_shift_lxx_light.png Binary files differnew file mode 100644 index 000000000..a46d65383 --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_shift_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_smiley_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_smiley_lxx_dark.png Binary files differindex 3999d1e2d..2cfe1d406 100644 --- a/java/res/drawable-hdpi/sym_keyboard_smiley_lxx_dark.png +++ b/java/res/drawable-hdpi/sym_keyboard_smiley_lxx_dark.png diff --git a/java/res/drawable-hdpi/sym_keyboard_smiley_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_smiley_lxx_light.png Binary files differnew file mode 100644 index 000000000..2cfe1d406 --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_smiley_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_spacebar_lxx_dark.9.png b/java/res/drawable-hdpi/sym_keyboard_spacebar_lxx_dark.9.png Binary files differindex f344deeec..c57cb73a5 100644 --- a/java/res/drawable-hdpi/sym_keyboard_spacebar_lxx_dark.9.png +++ b/java/res/drawable-hdpi/sym_keyboard_spacebar_lxx_dark.9.png diff --git a/java/res/drawable-hdpi/sym_keyboard_spacebar_lxx_light.9.png b/java/res/drawable-hdpi/sym_keyboard_spacebar_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..c27a36e81 --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_spacebar_lxx_light.9.png diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_voice_lxx_dark.png Binary files differindex 6b68c8af5..80d12481a 100644 --- a/java/res/drawable-hdpi/sym_keyboard_voice_lxx_dark.png +++ b/java/res/drawable-hdpi/sym_keyboard_voice_lxx_dark.png diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_voice_lxx_light.png Binary files differnew file mode 100644 index 000000000..d6b070eb6 --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_voice_lxx_light.png diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_dark.png Binary files differindex e67697b3f..e2bd604b8 100644 --- a/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_dark.png +++ b/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_dark.png diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_light.png Binary files differnew file mode 100644 index 000000000..d33ab4e88 --- /dev/null +++ b/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_light.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_active_lxx_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_lxx_dark.9.png Binary files differindex 281b5d3bc..787ce45ce 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_active_lxx_dark.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_active_lxx_dark.9.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_active_lxx_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..e7a585b70 --- /dev/null +++ b/java/res/drawable-mdpi/btn_keyboard_key_active_lxx_light.9.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png Binary files differindex eb1564353..7e34c6cf1 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_active_pressed_lxx_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_pressed_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..5a6513392 --- /dev/null +++ b/java/res/drawable-mdpi/btn_keyboard_key_active_pressed_lxx_light.9.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_dark.9.png Binary files differindex 9f244f2e9..bb9fc5910 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_dark.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_dark.9.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..afcb4f9b1 --- /dev/null +++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_light.9.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_dark.9.png Binary files differindex c5b3fbbd7..5b23e22b4 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_dark.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_dark.9.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..3323d2c7d --- /dev/null +++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_light.9.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png Binary files differnew file mode 100644 index 000000000..cf12a8c1f --- /dev/null +++ b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..e388cfb2f --- /dev/null +++ b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_light.9.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png Binary files differindex 66824cf8e..1b0ed0c97 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..d8e4355ce --- /dev/null +++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_light.9.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png Binary files differindex 527dfd014..f990a9e7c 100644 --- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png +++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..b9a42fa72 --- /dev/null +++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_light.9.png diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png Binary files differindex d3200921a..8bd1343b7 100644 --- a/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png +++ b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_light.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..f97cfb913 --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_light.9.png diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png Binary files differindex 60a36333e..37e45fb28 100644 --- a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png +++ b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_light.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..1fe06f9fe --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_light.9.png diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_dark.9.png Binary files differindex 896505518..f12ba5f7f 100644 --- a/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_dark.9.png +++ b/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_dark.9.png diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_light.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..1edf94fbf --- /dev/null +++ b/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_light.9.png diff --git a/java/res/drawable-mdpi/suggestions_strip_divider.png b/java/res/drawable-mdpi/suggestions_strip_divider_holo.png Binary files differindex 21e904939..21e904939 100644 --- a/java/res/drawable-mdpi/suggestions_strip_divider.png +++ b/java/res/drawable-mdpi/suggestions_strip_divider_holo.png diff --git a/java/res/drawable-mdpi/suggestions_strip_divider_lxx_dark.png b/java/res/drawable-mdpi/suggestions_strip_divider_lxx_dark.png Binary files differnew file mode 100644 index 000000000..c8afc6681 --- /dev/null +++ b/java/res/drawable-mdpi/suggestions_strip_divider_lxx_dark.png diff --git a/java/res/drawable-mdpi/suggestions_strip_divider_lxx_light.png b/java/res/drawable-mdpi/suggestions_strip_divider_lxx_light.png Binary files differnew file mode 100644 index 000000000..051e66ccd --- /dev/null +++ b/java/res/drawable-mdpi/suggestions_strip_divider_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_delete_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_delete_lxx_dark.png Binary files differindex 2d3ac9749..ba74e5e14 100644 --- a/java/res/drawable-mdpi/sym_keyboard_delete_lxx_dark.png +++ b/java/res/drawable-mdpi/sym_keyboard_delete_lxx_dark.png diff --git a/java/res/drawable-mdpi/sym_keyboard_delete_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_delete_lxx_light.png Binary files differnew file mode 100644 index 000000000..007b5ea49 --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_delete_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_done_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_done_lxx_light.png Binary files differnew file mode 100644 index 000000000..930f97111 --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_done_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_go_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_go_lxx_light.png Binary files differnew file mode 100644 index 000000000..f9975c34f --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_go_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_language_switch_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_language_switch_lxx_dark.png Binary files differindex a90bf757c..44dc1b620 100644 --- a/java/res/drawable-mdpi/sym_keyboard_language_switch_lxx_dark.png +++ b/java/res/drawable-mdpi/sym_keyboard_language_switch_lxx_dark.png diff --git a/java/res/drawable-mdpi/sym_keyboard_language_switch_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_language_switch_lxx_light.png Binary files differnew file mode 100644 index 000000000..e1c1265d5 --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_language_switch_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_next_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_next_lxx_light.png Binary files differnew file mode 100644 index 000000000..e18b1cf1c --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_next_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_previous_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_previous_lxx_light.png Binary files differnew file mode 100644 index 000000000..2044db67e --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_previous_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_return_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_return_lxx_light.png Binary files differnew file mode 100644 index 000000000..bfc7d7108 --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_return_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_search_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_search_lxx_light.png Binary files differnew file mode 100644 index 000000000..05fbe83c8 --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_search_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_send_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_send_lxx_light.png Binary files differnew file mode 100644 index 000000000..2de9b5619 --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_send_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_settings_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_settings_lxx_dark.png Binary files differindex dea7addfe..a04f4f515 100644 --- a/java/res/drawable-mdpi/sym_keyboard_settings_lxx_dark.png +++ b/java/res/drawable-mdpi/sym_keyboard_settings_lxx_dark.png diff --git a/java/res/drawable-mdpi/sym_keyboard_settings_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_settings_lxx_light.png Binary files differnew file mode 100644 index 000000000..f70030ba3 --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_settings_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_locked_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_shift_locked_lxx_light.png Binary files differnew file mode 100644 index 000000000..298cb9526 --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_shift_locked_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_shift_lxx_dark.png Binary files differindex c10066e81..d5bd44cb3 100644 --- a/java/res/drawable-mdpi/sym_keyboard_shift_lxx_dark.png +++ b/java/res/drawable-mdpi/sym_keyboard_shift_lxx_dark.png diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_shift_lxx_light.png Binary files differnew file mode 100644 index 000000000..056fc51d6 --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_shift_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_smiley_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_smiley_lxx_dark.png Binary files differindex 8276d992c..2258851a9 100644 --- a/java/res/drawable-mdpi/sym_keyboard_smiley_lxx_dark.png +++ b/java/res/drawable-mdpi/sym_keyboard_smiley_lxx_dark.png diff --git a/java/res/drawable-mdpi/sym_keyboard_smiley_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_smiley_lxx_light.png Binary files differnew file mode 100644 index 000000000..ff49d58e1 --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_smiley_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_spacebar_lxx_dark.9.png b/java/res/drawable-mdpi/sym_keyboard_spacebar_lxx_dark.9.png Binary files differindex ed32cf652..30892b8ee 100644 --- a/java/res/drawable-mdpi/sym_keyboard_spacebar_lxx_dark.9.png +++ b/java/res/drawable-mdpi/sym_keyboard_spacebar_lxx_dark.9.png diff --git a/java/res/drawable-mdpi/sym_keyboard_spacebar_lxx_light.9.png b/java/res/drawable-mdpi/sym_keyboard_spacebar_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..ab64cd642 --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_spacebar_lxx_light.9.png diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_voice_lxx_dark.png Binary files differindex 5661f6b33..d40b10687 100644 --- a/java/res/drawable-mdpi/sym_keyboard_voice_lxx_dark.png +++ b/java/res/drawable-mdpi/sym_keyboard_voice_lxx_dark.png diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_voice_lxx_light.png Binary files differnew file mode 100644 index 000000000..0ddcb792c --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_voice_lxx_light.png diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_dark.png Binary files differindex 5182f1e8f..7bde452e7 100644 --- a/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_dark.png +++ b/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_dark.png diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_light.png Binary files differnew file mode 100644 index 000000000..8831bc04c --- /dev/null +++ b/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_light.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_active_lxx_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_lxx_dark.9.png Binary files differindex 0f6a3e1e0..47264065a 100644 --- a/java/res/drawable-xhdpi/btn_keyboard_key_active_lxx_dark.9.png +++ b/java/res/drawable-xhdpi/btn_keyboard_key_active_lxx_dark.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_active_lxx_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..dca7a3274 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_active_lxx_light.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png Binary files differindex 44c84f1f8..8063fcd82 100644 --- a/java/res/drawable-xhdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png +++ b/java/res/drawable-xhdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_active_pressed_lxx_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_pressed_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..fa32a2c6e --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_active_pressed_lxx_light.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png Binary files differindex 98c085b15..daa3c8afc 100644 --- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png +++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..e58df5cb0 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_light.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png Binary files differindex f0c132869..ea002f53b 100644 --- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png +++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..5a9507387 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_light.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png Binary files differnew file mode 100644 index 000000000..4c024e261 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..0b340e2cb --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_light.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png Binary files differindex a2b17ba50..10a6ab5f9 100644 --- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png +++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..58b705414 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_light.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png Binary files differindex 99ff0affb..e6227c34b 100644 --- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png +++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..3da5f47b0 --- /dev/null +++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_light.9.png diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png Binary files differindex d40afebd8..8407877e2 100644 --- a/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png +++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_light.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..bd6ec94b8 --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_light.9.png diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png Binary files differindex d1a2f7599..630340ff0 100644 --- a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png +++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_light.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..eef27a377 --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_light.9.png diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_dark.9.png Binary files differindex 36df715b6..19957fa5f 100644 --- a/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_dark.9.png +++ b/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_dark.9.png diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_light.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..8a51d7148 --- /dev/null +++ b/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_light.9.png diff --git a/java/res/drawable-xhdpi/suggestions_strip_divider.png b/java/res/drawable-xhdpi/suggestions_strip_divider_holo.png Binary files differindex 4101ebc59..4101ebc59 100644 --- a/java/res/drawable-xhdpi/suggestions_strip_divider.png +++ b/java/res/drawable-xhdpi/suggestions_strip_divider_holo.png diff --git a/java/res/drawable-xhdpi/suggestions_strip_divider_lxx_dark.png b/java/res/drawable-xhdpi/suggestions_strip_divider_lxx_dark.png Binary files differnew file mode 100644 index 000000000..0334602a2 --- /dev/null +++ b/java/res/drawable-xhdpi/suggestions_strip_divider_lxx_dark.png diff --git a/java/res/drawable-xhdpi/suggestions_strip_divider_lxx_light.png b/java/res/drawable-xhdpi/suggestions_strip_divider_lxx_light.png Binary files differnew file mode 100644 index 000000000..0047e5c17 --- /dev/null +++ b/java/res/drawable-xhdpi/suggestions_strip_divider_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_delete_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_delete_lxx_dark.png Binary files differindex 7c9f34f12..ffb9598cc 100644 --- a/java/res/drawable-xhdpi/sym_keyboard_delete_lxx_dark.png +++ b/java/res/drawable-xhdpi/sym_keyboard_delete_lxx_dark.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_delete_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_delete_lxx_light.png Binary files differnew file mode 100644 index 000000000..df4e358a1 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_delete_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_done_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_done_lxx_light.png Binary files differnew file mode 100644 index 000000000..070fe8d7b --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_done_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_go_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_go_lxx_light.png Binary files differnew file mode 100644 index 000000000..33bbe3c50 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_go_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_language_switch_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_language_switch_lxx_dark.png Binary files differindex f964346c1..bdc126796 100644 --- a/java/res/drawable-xhdpi/sym_keyboard_language_switch_lxx_dark.png +++ b/java/res/drawable-xhdpi/sym_keyboard_language_switch_lxx_dark.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_language_switch_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_language_switch_lxx_light.png Binary files differnew file mode 100644 index 000000000..023e64720 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_language_switch_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_next_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_next_lxx_light.png Binary files differnew file mode 100644 index 000000000..2c1fe6d3c --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_next_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_previous_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_previous_lxx_light.png Binary files differnew file mode 100644 index 000000000..49b2651f3 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_previous_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_return_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_return_lxx_light.png Binary files differnew file mode 100644 index 000000000..85473bc08 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_return_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_search_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_search_lxx_light.png Binary files differnew file mode 100644 index 000000000..a95d55441 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_search_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_send_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_send_lxx_light.png Binary files differnew file mode 100644 index 000000000..21b0ac0c5 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_send_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_settings_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_settings_lxx_dark.png Binary files differindex 8c83d9fb6..ec72c3867 100644 --- a/java/res/drawable-xhdpi/sym_keyboard_settings_lxx_dark.png +++ b/java/res/drawable-xhdpi/sym_keyboard_settings_lxx_dark.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_settings_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_settings_lxx_light.png Binary files differnew file mode 100644 index 000000000..d46c26bc8 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_settings_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_locked_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_lxx_light.png Binary files differnew file mode 100644 index 000000000..64fdb1762 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_dark.png Binary files differindex 19acffaeb..bf5560580 100644 --- a/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_dark.png +++ b/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_dark.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_light.png Binary files differnew file mode 100644 index 000000000..3a56ed9dc --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_smiley_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_smiley_lxx_dark.png Binary files differindex 78923fadb..a1d4b2259 100644 --- a/java/res/drawable-xhdpi/sym_keyboard_smiley_lxx_dark.png +++ b/java/res/drawable-xhdpi/sym_keyboard_smiley_lxx_dark.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_smiley_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_smiley_lxx_light.png Binary files differnew file mode 100644 index 000000000..df3eba750 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_smiley_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_spacebar_lxx_dark.9.png b/java/res/drawable-xhdpi/sym_keyboard_spacebar_lxx_dark.9.png Binary files differindex 71234e570..9eaa00560 100644 --- a/java/res/drawable-xhdpi/sym_keyboard_spacebar_lxx_dark.9.png +++ b/java/res/drawable-xhdpi/sym_keyboard_spacebar_lxx_dark.9.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_spacebar_lxx_light.9.png b/java/res/drawable-xhdpi/sym_keyboard_spacebar_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..0cf38f2af --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_spacebar_lxx_light.9.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_voice_lxx_dark.png Binary files differindex 4e9631e7b..5c2b40603 100644 --- a/java/res/drawable-xhdpi/sym_keyboard_voice_lxx_dark.png +++ b/java/res/drawable-xhdpi/sym_keyboard_voice_lxx_dark.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_voice_lxx_light.png Binary files differnew file mode 100644 index 000000000..c9b25040c --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_voice_lxx_light.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_dark.png Binary files differindex 66c0e3c56..a32f741b3 100644 --- a/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_dark.png +++ b/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_dark.png diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_light.png Binary files differnew file mode 100644 index 000000000..1398a3ed6 --- /dev/null +++ b/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_light.png diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_active_lxx_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_lxx_dark.9.png Binary files differindex dc67c6f19..f49239794 100644 --- a/java/res/drawable-xxhdpi/btn_keyboard_key_active_lxx_dark.9.png +++ b/java/res/drawable-xxhdpi/btn_keyboard_key_active_lxx_dark.9.png diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_active_lxx_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..1f5f922dc --- /dev/null +++ b/java/res/drawable-xxhdpi/btn_keyboard_key_active_lxx_light.9.png diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png Binary files differindex 2e12dd1d4..65e455c7b 100644 --- a/java/res/drawable-xxhdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png +++ b/java/res/drawable-xxhdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_active_pressed_lxx_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_pressed_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..031014360 --- /dev/null +++ b/java/res/drawable-xxhdpi/btn_keyboard_key_active_pressed_lxx_light.9.png diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png Binary files differindex 4ec5864c1..535a00ade 100644 --- a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png +++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..fb1dc62d1 --- /dev/null +++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_light.9.png diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png Binary files differindex 6b5c0c0a4..2166f62ad 100644 --- a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png +++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..70346218f --- /dev/null +++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_light.9.png diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png Binary files differnew file mode 100644 index 000000000..f74ac5ce4 --- /dev/null +++ b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..e58d6643f --- /dev/null +++ b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_light.9.png diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png Binary files differindex 6fd8eedd3..2fd8b670b 100644 --- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png +++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..8e01cfa2d --- /dev/null +++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_light.9.png diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png Binary files differindex 91322882f..d0252e165 100644 --- a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png +++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..1619411b2 --- /dev/null +++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_light.9.png diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png Binary files differindex f7814917d..284302f9b 100644 --- a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png +++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_light.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..dcc0ab084 --- /dev/null +++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_light.9.png diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png Binary files differindex a79499f24..1ae262510 100644 --- a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png +++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_light.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..5fd175187 --- /dev/null +++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_light.9.png diff --git a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_dark.9.png Binary files differindex 91d5d7f90..92c479da8 100644 --- a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_dark.9.png +++ b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_dark.9.png diff --git a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_light.9.png b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..1336d8005 --- /dev/null +++ b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_light.9.png diff --git a/java/res/drawable-xxhdpi/suggestions_strip_divider.png b/java/res/drawable-xxhdpi/suggestions_strip_divider_holo.png Binary files differindex d13ca42aa..d13ca42aa 100644 --- a/java/res/drawable-xxhdpi/suggestions_strip_divider.png +++ b/java/res/drawable-xxhdpi/suggestions_strip_divider_holo.png diff --git a/java/res/drawable-xxhdpi/suggestions_strip_divider_lxx_dark.png b/java/res/drawable-xxhdpi/suggestions_strip_divider_lxx_dark.png Binary files differnew file mode 100644 index 000000000..5f0b3dec5 --- /dev/null +++ b/java/res/drawable-xxhdpi/suggestions_strip_divider_lxx_dark.png diff --git a/java/res/drawable-xxhdpi/suggestions_strip_divider_lxx_light.png b/java/res/drawable-xxhdpi/suggestions_strip_divider_lxx_light.png Binary files differnew file mode 100644 index 000000000..9b37dd094 --- /dev/null +++ b/java/res/drawable-xxhdpi/suggestions_strip_divider_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_delete_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_delete_lxx_dark.png Binary files differindex dd95be61e..0196033a9 100644 --- a/java/res/drawable-xxhdpi/sym_keyboard_delete_lxx_dark.png +++ b/java/res/drawable-xxhdpi/sym_keyboard_delete_lxx_dark.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_delete_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_delete_lxx_light.png Binary files differnew file mode 100644 index 000000000..c3937c491 --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_delete_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_done_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_done_lxx_light.png Binary files differnew file mode 100644 index 000000000..0347327ff --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_done_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_go_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_go_lxx_light.png Binary files differnew file mode 100644 index 000000000..0c66a6bc1 --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_go_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_language_switch_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_language_switch_lxx_dark.png Binary files differindex fc85e512d..151fafe8e 100644 --- a/java/res/drawable-xxhdpi/sym_keyboard_language_switch_lxx_dark.png +++ b/java/res/drawable-xxhdpi/sym_keyboard_language_switch_lxx_dark.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_language_switch_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_language_switch_lxx_light.png Binary files differnew file mode 100644 index 000000000..82b4d51e5 --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_language_switch_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_next_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_next_lxx_light.png Binary files differnew file mode 100644 index 000000000..4e1407012 --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_next_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_previous_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_previous_lxx_light.png Binary files differnew file mode 100644 index 000000000..78865cb0e --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_previous_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_light.png Binary files differnew file mode 100644 index 000000000..a429d6634 --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_search_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_search_lxx_light.png Binary files differnew file mode 100644 index 000000000..1b9952aa6 --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_search_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_send_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_send_lxx_light.png Binary files differnew file mode 100644 index 000000000..a886505e1 --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_send_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_settings_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_settings_lxx_dark.png Binary files differindex d513ad9e6..143ec0038 100644 --- a/java/res/drawable-xxhdpi/sym_keyboard_settings_lxx_dark.png +++ b/java/res/drawable-xxhdpi/sym_keyboard_settings_lxx_dark.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_settings_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_settings_lxx_light.png Binary files differnew file mode 100644 index 000000000..e5be02811 --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_settings_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_lxx_light.png Binary files differnew file mode 100644 index 000000000..2da7b6514 --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_dark.png Binary files differindex ddfc1a90d..774174c8b 100644 --- a/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_dark.png +++ b/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_dark.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_light.png Binary files differnew file mode 100644 index 000000000..ee51c562b --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_smiley_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_smiley_lxx_dark.png Binary files differindex a4df3bb0e..ea89a8790 100644 --- a/java/res/drawable-xxhdpi/sym_keyboard_smiley_lxx_dark.png +++ b/java/res/drawable-xxhdpi/sym_keyboard_smiley_lxx_dark.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_smiley_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_smiley_lxx_light.png Binary files differnew file mode 100644 index 000000000..08d4f8adc --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_smiley_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_spacebar_lxx_dark.9.png b/java/res/drawable-xxhdpi/sym_keyboard_spacebar_lxx_dark.9.png Binary files differindex 01075ebf3..abd263f00 100644 --- a/java/res/drawable-xxhdpi/sym_keyboard_spacebar_lxx_dark.9.png +++ b/java/res/drawable-xxhdpi/sym_keyboard_spacebar_lxx_dark.9.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_spacebar_lxx_light.9.png b/java/res/drawable-xxhdpi/sym_keyboard_spacebar_lxx_light.9.png Binary files differnew file mode 100644 index 000000000..90c963733 --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_spacebar_lxx_light.9.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_voice_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_voice_lxx_dark.png Binary files differindex a36724cac..9bc9effcb 100644 --- a/java/res/drawable-xxhdpi/sym_keyboard_voice_lxx_dark.png +++ b/java/res/drawable-xxhdpi/sym_keyboard_voice_lxx_dark.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_voice_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_voice_lxx_light.png Binary files differnew file mode 100644 index 000000000..42331e920 --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_voice_lxx_light.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_dark.png Binary files differindex 2706dca57..413c4ff3f 100644 --- a/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_dark.png +++ b/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_dark.png diff --git a/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_light.png Binary files differnew file mode 100644 index 000000000..5a3ed0d48 --- /dev/null +++ b/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_light.png diff --git a/java/res/drawable/btn_keyboard_key_functional_lxx_light.xml b/java/res/drawable/btn_keyboard_key_functional_lxx_light.xml new file mode 100644 index 000000000..e518ca11d --- /dev/null +++ b/java/res/drawable/btn_keyboard_key_functional_lxx_light.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <!-- Functional keys. --> + <item android:state_pressed="true" + android:drawable="@color/key_background_pressed_lxx_light" /> + <item android:drawable="@color/key_background_lxx_light" /> +</selector> diff --git a/java/res/drawable/btn_keyboard_key_lxx_light.xml b/java/res/drawable/btn_keyboard_key_lxx_light.xml new file mode 100644 index 000000000..60fe02dd2 --- /dev/null +++ b/java/res/drawable/btn_keyboard_key_lxx_light.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <!-- Action keys. --> + <item android:state_active="true" android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_active_pressed_lxx_light" /> + <item android:state_active="true" + android:drawable="@drawable/btn_keyboard_key_active_lxx_light" /> + + <!-- Toggle keys. Use checkable/checked state. --> + <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_pressed_on_lxx_light" /> + <item android:state_checkable="true" android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_pressed_off_lxx_light" /> + <item android:state_checkable="true" android:state_checked="true" + android:drawable="@drawable/btn_keyboard_key_normal_on_lxx_light" /> + <item android:state_checkable="true" + android:drawable="@drawable/btn_keyboard_key_normal_off_lxx_light" /> + + <!-- Empty background keys. --> + <item android:state_empty="true" + android:drawable="@color/key_background_lxx_light" /> + + <!-- Normal keys. --> + <item android:state_pressed="true" + android:drawable="@color/key_background_pressed_lxx_light" /> + <item android:drawable="@color/key_background_lxx_light" /> +</selector> diff --git a/java/res/drawable/btn_keyboard_key_popup_lxx_dark.xml b/java/res/drawable/btn_keyboard_key_popup_lxx_dark.xml new file mode 100644 index 000000000..dee645712 --- /dev/null +++ b/java/res/drawable/btn_keyboard_key_popup_lxx_dark.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_popup_selected_lxx_dark" /> + <item android:drawable="@android:color/transparent" /> +</selector> diff --git a/java/res/drawable/btn_keyboard_spacebar_lxx_light.xml b/java/res/drawable/btn_keyboard_spacebar_lxx_light.xml new file mode 100644 index 000000000..acd19fda4 --- /dev/null +++ b/java/res/drawable/btn_keyboard_spacebar_lxx_light.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_pressed="true" + android:drawable="@color/key_background_pressed_lxx_light" /> + <item android:drawable="@color/key_background_lxx_light" /> +</selector> diff --git a/java/res/drawable/btn_suggestion_lxx_light.xml b/java/res/drawable/btn_suggestion_lxx_light.xml new file mode 100644 index 000000000..84a91209e --- /dev/null +++ b/java/res/drawable/btn_suggestion_lxx_light.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2014, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<selector + xmlns:android="http://schemas.android.com/apk/res/android" +> + <item + android:state_pressed="true" + android:drawable="@color/suggested_word_background_selected_lxx_dark" /> +</selector> diff --git a/java/res/drawable/keyboard_key_feedback_lxx_light.xml b/java/res/drawable/keyboard_key_feedback_lxx_light.xml new file mode 100644 index 000000000..f4341c9b5 --- /dev/null +++ b/java/res/drawable/keyboard_key_feedback_lxx_light.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" +> + <!-- Left edge --> + <item latin:state_left_edge="true" latin:state_has_morekeys="true" + android:drawable="@drawable/keyboard_key_feedback_more_background_lxx_light" /> + <item latin:state_left_edge="true" + android:drawable="@drawable/keyboard_key_feedback_background_lxx_light" /> + + <!-- Right edge --> + <item latin:state_right_edge="true" latin:state_has_morekeys="true" + android:drawable="@drawable/keyboard_key_feedback_more_background_lxx_light" /> + <item latin:state_right_edge="true" + android:drawable="@drawable/keyboard_key_feedback_background_lxx_light" /> + + <item latin:state_has_morekeys="true" + android:drawable="@drawable/keyboard_key_feedback_more_background_lxx_light" /> + <item android:drawable="@drawable/keyboard_key_feedback_background_lxx_light" /> +</selector> diff --git a/java/res/layout/emoji_palettes_view.xml b/java/res/layout/emoji_palettes_view.xml index 9ff090aad..a6ea38ba4 100644 --- a/java/res/layout/emoji_palettes_view.xml +++ b/java/res/layout/emoji_palettes_view.xml @@ -30,6 +30,7 @@ android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="@dimen/config_suggestions_strip_height" + style="?attr/suggestionStripViewStyle" > <TabHost android:id="@+id/emoji_category_tabhost" @@ -57,10 +58,7 @@ android:visibility="gone" /> </FrameLayout> </TabHost> - <View - android:layout_width="2dip" - android:layout_height="match_parent" - android:background="@drawable/suggestions_strip_divider" /> + <include layout="@layout/suggestion_divider" /> <!-- TODO: Implement KeyView and replace this. --> <!-- Provide audio and haptic feedback by ourselves based on the keyboard settings. We just need to ignore the system's audio and haptic feedback settings. --> diff --git a/java/res/layout/suggestion_divider.xml b/java/res/layout/suggestion_divider.xml index 563599d82..dfea017e6 100644 --- a/java/res/layout/suggestion_divider.xml +++ b/java/res/layout/suggestion_divider.xml @@ -26,9 +26,9 @@ android:layout_height="match_parent" android:padding="0dp" android:gravity="center" - android:src="@drawable/suggestions_strip_divider" android:contentDescription="@null" android:clickable="false" android:longClickable="false" android:hapticFeedbackEnabled="false" - android:soundEffectsEnabled="false" /> + android:soundEffectsEnabled="false" + style="?attr/suggestionStripViewStyle" /> diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml index 0eee08de2..ad7a04ebf 100644 --- a/java/res/values/colors.xml +++ b/java/res/values/colors.xml @@ -40,21 +40,36 @@ <color name="typed_word_color_klp">#D8F0F0F0</color> <color name="suggested_word_color_klp">#B2F0F0F0</color> <color name="highlight_translucent_color_klp">#99E0E0E0</color> - <!-- Color resources for LXX theme. Base color = F0F0F0 --> - <color name="key_text_color_lxx_dark">#FFFFFF</color> - <color name="key_text_inactive_color_lxx_dark">#808184</color> - <color name="key_hint_letter_color_lxx_dark">#808184</color> - <color name="highlight_color_lxx_dark">#7FCAC3</color> - <color name="typed_word_color_lxx_dark">#D87FCAC3</color> - <color name="suggested_word_color_lxx_dark">#B27FCAC3</color> - <color name="highlight_translucent_color_lxx_dark">#997FCAC3</color> - <color name="keyboard_background_lxx_dark">#384248</color> - <color name="key_background_lxx_dark">#384248</color> - <color name="key_background_pressed_lxx_dark">#546872</color> - <color name="suggestions_strip_background_lxx_dark">#263238</color> - <color name="suggested_word_background_selected_lxx_dark">#384248</color> + <!-- Color resources for LXX_Light theme. --> + <color name="key_text_color_lxx_light">#546E7A</color> + <color name="key_text_inactive_color_lxx_light">#99546E7A</color> + <color name="key_hint_letter_color_lxx_light">#99546E7A</color> + <color name="highlight_color_lxx_light">#4DB6AC</color> + <color name="typed_word_color_lxx_light">#D84DB6AC</color> + <color name="suggested_word_color_lxx_light">#B24DB6AC</color> + <color name="highlight_translucent_color_lxx_light">#994DB6AC</color> + <color name="keyboard_background_lxx_light">#ECEFF1</color> + <color name="key_background_lxx_light">#ECEFF1</color> + <color name="key_background_pressed_lxx_light">#26546E7A</color> + <color name="suggestions_strip_background_lxx_light">#E4E7E9</color> + <color name="suggested_word_background_selected_lxx_light">#26546E7A</color> + <color name="gesture_floating_preview_color_lxx_light">#C0000000</color> + <color name="emoji_tab_page_indicator_background_lxx_light">#E4E7E9</color> + <!-- Color resources for LXX_Dark theme. --> + <color name="key_text_color_lxx_dark">#B3FFFFFF</color> + <color name="key_text_inactive_color_lxx_dark">#66FFFFFF</color> + <color name="key_hint_letter_color_lxx_dark">#66FFFFFF</color> + <color name="highlight_color_lxx_dark">#80CBC4</color> + <color name="typed_word_color_lxx_dark">#D880CBC4</color> + <color name="suggested_word_color_lxx_dark">#B280CBC4</color> + <color name="highlight_translucent_color_lxx_dark">#9980CBC4</color> + <color name="keyboard_background_lxx_dark">#263238</color> + <color name="key_background_lxx_dark">#263238</color> + <color name="key_background_pressed_lxx_dark">#26CFD8DC</color> + <color name="suggestions_strip_background_lxx_dark">#21272B</color> + <color name="suggested_word_background_selected_lxx_dark">#26CFD8DC</color> <color name="gesture_floating_preview_color_lxx_dark">#C0000000</color> - <color name="emoji_tab_page_indicator_background_lxx_dark">#263238</color> + <color name="emoji_tab_page_indicator_background_lxx_dark">#21272B</color> <!-- Color resources for setup wizard and tutorial --> <color name="setup_background">#FFEBEBEB</color> <color name="setup_text_dark">#FF707070</color> diff --git a/java/res/values/keyboard-icons-lxx-dark.xml b/java/res/values/keyboard-icons-lxx-dark.xml index 7988e739e..b1549f2ca 100644 --- a/java/res/values/keyboard-icons-lxx-dark.xml +++ b/java/res/values/keyboard-icons-lxx-dark.xml @@ -21,7 +21,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="KeyboardIcons.LXX_Dark"> <!-- Keyboard icons --> - <!-- TODO: Update those icons for LXX theme. --> + <!-- TODO: Update those icons for LXX_Dark theme. --> <item name="iconShiftKey">@drawable/sym_keyboard_shift_lxx_dark</item> <item name="iconDeleteKey">@drawable/sym_keyboard_delete_lxx_dark</item> <item name="iconSettingsKey">@drawable/sym_keyboard_settings_lxx_dark</item> diff --git a/java/res/values/keyboard-icons-lxx-light.xml b/java/res/values/keyboard-icons-lxx-light.xml new file mode 100644 index 000000000..651e75ce2 --- /dev/null +++ b/java/res/values/keyboard-icons-lxx-light.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2014, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<resources xmlns:android="http://schemas.android.com/apk/res/android"> + <style name="KeyboardIcons.LXX_Light"> + <!-- Keyboard icons --> + <!-- TODO: Update those icons for LXX_Light theme. --> + <item name="iconShiftKey">@drawable/sym_keyboard_shift_lxx_light</item> + <item name="iconDeleteKey">@drawable/sym_keyboard_delete_lxx_light</item> + <item name="iconSettingsKey">@drawable/sym_keyboard_settings_lxx_light</item> + <item name="iconSpaceKey">@drawable/sym_keyboard_spacebar_lxx_light</item> + <item name="iconEnterKey">@drawable/sym_keyboard_return_lxx_light</item> + <item name="iconGoKey">@drawable/sym_keyboard_go_lxx_light</item> + <item name="iconSearchKey">@drawable/sym_keyboard_search_lxx_light</item> + <item name="iconSendKey">@drawable/sym_keyboard_send_lxx_light</item> + <item name="iconNextKey">@drawable/sym_keyboard_next_lxx_light</item> + <item name="iconDoneKey">@drawable/sym_keyboard_done_lxx_light</item> + <item name="iconPreviousKey">@drawable/sym_keyboard_previous_lxx_light</item> + <item name="iconTabKey">@drawable/sym_keyboard_tab_holo_dark</item> + <item name="iconShortcutKey">@drawable/sym_keyboard_voice_lxx_light</item> + <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_holo_dark</item> + <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_lxx_dark</item> + <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_lxx_light</item> + <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch_lxx_light</item> + <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo_dark</item> + <item name="iconZwjKey">@drawable/sym_keyboard_zwj_holo_dark</item> + <item name="iconEmojiKey">@drawable/sym_keyboard_smiley_lxx_light</item> + </style> +</resources> diff --git a/java/res/values/keyboard-themes.xml b/java/res/values/keyboard-themes.xml index 28a34c315..9d772c4e7 100644 --- a/java/res/values/keyboard-themes.xml +++ b/java/res/values/keyboard-themes.xml @@ -20,15 +20,15 @@ <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <!-- For keyboard color scheme option dialog. --> <string-array name="keyboard_theme_names" translatable="false"> - <!-- TODO: Implement Material Light theme. --> + <item>@string/keyboard_theme_material_light</item> <item>@string/keyboard_theme_material_dark</item> <item>@string/keyboard_theme_holo_white</item> <item>@string/keyboard_theme_holo_blue</item> </string-array> <!-- An element must be a keyboard theme id of {@link KeyboardTheme#THEME_ID_*}. --> <string-array name="keyboard_theme_ids" translatable="false"> - <!-- TODO: Implement Material Light theme. --> <item>3</item> + <item>4</item> <item>2</item> <item>0</item> </string-array> diff --git a/java/res/values/themes-ics.xml b/java/res/values/themes-ics.xml index 073ae90b9..6118ce177 100644 --- a/java/res/values/themes-ics.xml +++ b/java/res/values/themes-ics.xml @@ -121,6 +121,7 @@ <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item> <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item> <item name="android:background">@drawable/keyboard_suggest_strip_holo</item> + <item name="android:src">@drawable/suggestions_strip_divider_holo</item> <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item> <item name="colorValidTypedWord">@color/typed_word_color_ics</item> <item name="colorTypedWord">@color/typed_word_color_ics</item> diff --git a/java/res/values/themes-klp.xml b/java/res/values/themes-klp.xml index f895de572..193386062 100644 --- a/java/res/values/themes-klp.xml +++ b/java/res/values/themes-klp.xml @@ -121,6 +121,7 @@ <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item> <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item> <item name="android:background">@drawable/keyboard_suggest_strip_holo</item> + <item name="android:src">@drawable/suggestions_strip_divider_holo</item> <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item> <item name="colorValidTypedWord">@color/typed_word_color_klp</item> <item name="colorTypedWord">@color/typed_word_color_klp</item> diff --git a/java/res/values/themes-lxx-dark.xml b/java/res/values/themes-lxx-dark.xml index 1db8f428e..c04e04d56 100644 --- a/java/res/values/themes-lxx-dark.xml +++ b/java/res/values/themes-lxx-dark.xml @@ -34,7 +34,7 @@ parent="Keyboard" > <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] --> - <item name="themeId">3</item> + <item name="themeId">4</item> <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item> <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item> <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item> @@ -108,8 +108,7 @@ parent="KeyboardView.LXX_Dark" > <item name="android:background">@drawable/keyboard_popup_panel_background_lxx_dark</item> - <!-- Reuse KLP key background --> - <item name="keyBackground">@drawable/btn_keyboard_key_popup_klp</item> + <item name="keyBackground">@drawable/btn_keyboard_key_popup_lxx_dark</item> <item name="keyTypeface">normal</item> <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item> </style> @@ -122,6 +121,7 @@ <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item> <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item> <item name="android:background">@color/suggestions_strip_background_lxx_dark</item> + <item name="android:src">@drawable/suggestions_strip_divider_lxx_dark</item> <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item> <item name="colorValidTypedWord">@color/typed_word_color_lxx_dark</item> <item name="colorTypedWord">@color/typed_word_color_lxx_dark</item> diff --git a/java/res/values/themes-lxx-light.xml b/java/res/values/themes-lxx-light.xml new file mode 100644 index 000000000..3695f8046 --- /dev/null +++ b/java/res/values/themes-lxx-light.xml @@ -0,0 +1,140 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2014, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<resources xmlns:android="http://schemas.android.com/apk/res/android"> + <style name="KeyboardTheme.LXX_Light" parent="KeyboardIcons.LXX_Light"> + <item name="keyboardStyle">@style/Keyboard.LXX_Light</item> + <item name="keyboardViewStyle">@style/KeyboardView.LXX_Light</item> + <item name="mainKeyboardViewStyle">@style/MainKeyboardView.LXX_Light</item> + <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.LXX_Light</item> + <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.LXX_Light</item> + <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.LXX_Light</item> + <item name="suggestionStripViewStyle">@style/SuggestionStripView.LXX_Light</item> + <item name="suggestionWordStyle">@style/SuggestionWord.LXX_Light</item> + </style> + <style + name="Keyboard.LXX_Light" + parent="Keyboard" + > + <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] --> + <item name="themeId">3</item> + <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item> + <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item> + <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item> + <item name="verticalGap">@fraction/config_key_vertical_gap_holo</item> + <item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item> + </style> + <style + name="KeyboardView.LXX_Light" + parent="KeyboardView" + > + <item name="android:background">@color/keyboard_background_lxx_light</item> + <item name="keyBackground">@drawable/btn_keyboard_key_lxx_light</item> + <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_lxx_light</item> + <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_lxx_light</item> + <item name="spacebarIconWidthRatio">0.9</item> + <item name="keyTypeface">normal</item> + <item name="keyTextColor">@color/key_text_color_lxx_light</item> + <item name="keyTextInactivatedColor">@color/key_text_inactive_color_lxx_light</item> + <item name="functionalTextColor">@color/key_hint_letter_color_lxx_light</item> + <item name="keyHintLetterColor">@color/key_hint_letter_color_lxx_light</item> + <item name="keyHintLabelColor">@color/key_text_inactive_color_lxx_light</item> + <item name="keyShiftedLetterHintInactivatedColor">@color/key_text_inactive_color_lxx_light</item> + <item name="keyShiftedLetterHintActivatedColor">@color/key_text_color_lxx_light</item> + <item name="keyPreviewTextColor">@color/key_text_color_lxx_light</item> + <!-- A negative value to disable key text shadow layer. --> + <item name="keyTextShadowRadius">-1.0</item> + </style> + <style + name="MainKeyboardView.LXX_Light" + parent="KeyboardView.LXX_Light" + > + <item name="keyPreviewBackground">@drawable/keyboard_key_feedback_lxx_light</item> + <item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item> + <item name="gestureFloatingPreviewTextColor">@color/highlight_color_lxx_light</item> + <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_lxx_light</item> + <item name="gestureTrailColor">@color/highlight_color_lxx_light</item> + <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_lxx_light</item> + <item name="languageOnSpacebarTextColor">@color/key_text_inactive_color_lxx_light</item> + <!-- A negative value to disable text shadow layer. --> + <item name="languageOnSpacebarTextShadowRadius">-1.0</item> + </style> + <!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it, + for instance delete button, need themed {@link KeyboardView} attributes. --> + <style + name="EmojiPalettesView.LXX_Light" + parent="MainKeyboardView.LXX_Light" + > + <item name="categoryIndicatorEnabled">false</item> + <item name="categoryPageIndicatorColor">@color/highlight_color_lxx_light</item> + <item name="categoryPageIndicatorBackground">@color/emoji_tab_page_indicator_background_lxx_light</item> + <!-- TODO: Update those icons to LXX_Light theme. --> + <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_holo_dark</item> + <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_holo_dark</item> + <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_holo_dark</item> + <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_holo_dark</item> + <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_holo_dark</item> + <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_holo_dark</item> + <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_holo_dark</item> + </style> + <style + name="MoreKeysKeyboard.LXX_Light" + parent="Keyboard.LXX_Light" + > + <item name="keyboardTopPadding">0%p</item> + <item name="keyboardBottomPadding">0%p</item> + <item name="horizontalGap">0%p</item> + <item name="touchPositionCorrectionData">@null</item> + </style> + <style + name="MoreKeysKeyboardView.LXX_Light" + parent="KeyboardView.LXX_Light" + > + <item name="android:background">@drawable/keyboard_popup_panel_background_lxx_light</item> + <!-- Reuse KLP key background --> + <item name="keyBackground">@drawable/btn_keyboard_key_popup_klp</item> + <item name="keyTypeface">normal</item> + <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item> + </style> + <style + name="SuggestionStripView.LXX_Light" + parent="KeyboardView.LXX_Light" + > + <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item> + <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item> + <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item> + <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item> + <item name="android:background">@color/suggestions_strip_background_lxx_light</item> + <item name="android:src">@drawable/suggestions_strip_divider_lxx_light</item> + <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item> + <item name="colorValidTypedWord">@color/typed_word_color_lxx_light</item> + <item name="colorTypedWord">@color/typed_word_color_lxx_light</item> + <item name="colorAutoCorrect">@color/highlight_color_lxx_light</item> + <item name="colorSuggested">@color/suggested_word_color_lxx_light</item> + <item name="alphaObsoleted">70%</item> + </style> + <style + name="SuggestionWord.LXX_Light" + parent="SuggestionWord" + > + <item name="android:background">@drawable/btn_suggestion_lxx_light</item> + <item name="android:textColor">@color/highlight_color_lxx_light</item> + </style> +</resources> diff --git a/java/src/com/android/inputmethod/compat/TextInfoCompatUtils.java b/java/src/com/android/inputmethod/compat/TextInfoCompatUtils.java index 8bd919749..09f39a756 100644 --- a/java/src/com/android/inputmethod/compat/TextInfoCompatUtils.java +++ b/java/src/com/android/inputmethod/compat/TextInfoCompatUtils.java @@ -22,7 +22,6 @@ import com.android.inputmethod.annotations.UsedForTesting; import java.lang.reflect.Constructor; import java.lang.reflect.Method; -import java.util.Locale; @UsedForTesting public final class TextInfoCompatUtils { @@ -50,9 +49,18 @@ public final class TextInfoCompatUtils { sequenceNumber); } + /** + * Returns the result of {@link TextInfo#getCharSequence()} when available. Otherwise returns + * the result of {@link TextInfo#getText()} as fall back. + * @param textInfo the instance for which {@link TextInfo#getCharSequence()} or + * {@link TextInfo#getText()} is called. + * @return the result of {@link TextInfo#getCharSequence()} when available. Otherwise returns + * the result of {@link TextInfo#getText()} as fall back. If {@code textInfo} is {@code null}, + * returns {@code null}. + */ @UsedForTesting - public static CharSequence getCharSequence(final TextInfo textInfo, - final CharSequence defaultValue) { + public static CharSequence getCharSequenceOrString(final TextInfo textInfo) { + final CharSequence defaultValue = (textInfo == null ? null : textInfo.getText()); return (CharSequence) CompatUtils.invoke(textInfo, defaultValue, TEXT_INFO_GET_CHAR_SEQUENCE); } diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java index 7b41dfef6..4c2e0dd1d 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java @@ -34,7 +34,8 @@ public final class KeyboardTheme implements Comparable<KeyboardTheme> { public static final int THEME_ID_ICS = 0; public static final int THEME_ID_KLP = 2; - public static final int THEME_ID_LXX_DARK = 3; + public static final int THEME_ID_LXX_LIGHT = 3; + public static final int THEME_ID_LXX_DARK = 4; public static final int DEFAULT_THEME_ID = THEME_ID_KLP; private static final KeyboardTheme[] KEYBOARD_THEMES = { @@ -44,10 +45,12 @@ public final class KeyboardTheme implements Comparable<KeyboardTheme> { new KeyboardTheme(THEME_ID_KLP, R.style.KeyboardTheme_KLP, // Default theme for ICS, JB, and KLP. VERSION_CODES.ICE_CREAM_SANDWICH), - new KeyboardTheme(THEME_ID_LXX_DARK, R.style.KeyboardTheme_LXX_Dark, + new KeyboardTheme(THEME_ID_LXX_LIGHT, R.style.KeyboardTheme_LXX_Light, // Default theme for LXX. // TODO: Update this constant once the *next* version becomes available. VERSION_CODES.CUR_DEVELOPMENT), + new KeyboardTheme(THEME_ID_LXX_DARK, R.style.KeyboardTheme_LXX_Dark, + VERSION_CODES.BASE), }; static { diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java index 90c8f618f..72b503138 100644 --- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java +++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java @@ -16,22 +16,31 @@ package com.android.inputmethod.latin.spellcheck; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.service.textservice.SpellCheckerService; import android.text.InputType; import android.util.Log; +import android.util.LruCache; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodSubtype; import android.view.textservice.SuggestionsInfo; +import com.android.inputmethod.keyboard.Keyboard; +import com.android.inputmethod.keyboard.KeyboardId; import com.android.inputmethod.keyboard.KeyboardLayoutSet; +import com.android.inputmethod.keyboard.ProximityInfo; import com.android.inputmethod.latin.ContactsBinaryDictionary; import com.android.inputmethod.latin.Dictionary; import com.android.inputmethod.latin.DictionaryCollection; +import com.android.inputmethod.latin.DictionaryFacilitator; import com.android.inputmethod.latin.DictionaryFactory; +import com.android.inputmethod.latin.PrevWordsInfo; import com.android.inputmethod.latin.R; +import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; +import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion; import com.android.inputmethod.latin.UserBinaryDictionary; import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils; import com.android.inputmethod.latin.utils.BinaryDictionaryUtils; @@ -39,15 +48,23 @@ import com.android.inputmethod.latin.utils.CollectionUtils; import com.android.inputmethod.latin.utils.LocaleUtils; import com.android.inputmethod.latin.utils.ScriptUtils; import com.android.inputmethod.latin.utils.StringUtils; +import com.android.inputmethod.latin.utils.SuggestionResults; +import com.android.inputmethod.latin.WordComposer; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Locale; import java.util.Map; +import java.util.TreeMap; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.Semaphore; +import java.util.concurrent.TimeUnit; /** * Service for spell checking, using LatinIME's dictionaries and mechanisms. @@ -56,31 +73,79 @@ public final class AndroidSpellCheckerService extends SpellCheckerService implements SharedPreferences.OnSharedPreferenceChangeListener { private static final String TAG = AndroidSpellCheckerService.class.getSimpleName(); private static final boolean DBG = false; - private static final int POOL_SIZE = 2; public static final String PREF_USE_CONTACTS_KEY = "pref_spellcheck_use_contacts"; private static final int SPELLCHECKER_DUMMY_KEYBOARD_WIDTH = 480; private static final int SPELLCHECKER_DUMMY_KEYBOARD_HEIGHT = 368; - private final static String[] EMPTY_STRING_ARRAY = new String[0]; - private Map<String, DictionaryPool> mDictionaryPools = CollectionUtils.newSynchronizedTreeMap(); - private Map<String, UserBinaryDictionary> mUserDictionaries = - CollectionUtils.newSynchronizedTreeMap(); - private ContactsBinaryDictionary mContactsDictionary; + private static final String DICTIONARY_NAME_PREFIX = "spellcheck_"; + private static final int WAIT_FOR_LOADING_MAIN_DICT_IN_MILLISECONDS = 1000; + private static final int MAX_RETRY_COUNT_FOR_WAITING_FOR_LOADING_DICT = 5; + + private static final String[] EMPTY_STRING_ARRAY = new String[0]; + + private final HashSet<Locale> mCachedLocales = new HashSet<>(); + + private final int MAX_NUM_OF_THREADS_READ_DICTIONARY = 2; + private final Semaphore mSemaphore = new Semaphore(MAX_NUM_OF_THREADS_READ_DICTIONARY, + true /* fair */); + // TODO: Make each spell checker session has its own session id. + private final ConcurrentLinkedQueue<Integer> mSessionIdPool = new ConcurrentLinkedQueue<>(); + + private static class DictionaryFacilitatorLruCache extends + LruCache<Locale, DictionaryFacilitator> { + private final HashSet<Locale> mCachedLocales; + public DictionaryFacilitatorLruCache(final HashSet<Locale> cachedLocales, int maxSize) { + super(maxSize); + mCachedLocales = cachedLocales; + } + + @Override + protected void entryRemoved(boolean evicted, Locale key, + DictionaryFacilitator oldValue, DictionaryFacilitator newValue) { + if (oldValue != null && oldValue != newValue) { + oldValue.closeDictionaries(); + } + if (key != null && newValue == null) { + // Remove locale from the cache when the dictionary facilitator for the locale is + // evicted and new facilitator is not set for the locale. + mCachedLocales.remove(key); + if (size() >= maxSize()) { + Log.w(TAG, "DictionaryFacilitator for " + key.toString() + + " has been evicted due to cache size limit." + + " size: " + size() + ", maxSize: " + maxSize()); + } + } + } + } + + private static final int MAX_DICTIONARY_FACILITATOR_COUNT = 3; + private final LruCache<Locale, DictionaryFacilitator> mDictionaryFacilitatorCache = + new DictionaryFacilitatorLruCache(mCachedLocales, MAX_DICTIONARY_FACILITATOR_COUNT); + private final ConcurrentHashMap<Locale, Keyboard> mKeyboardCache = new ConcurrentHashMap<>(); // The threshold for a suggestion to be considered "recommended". private float mRecommendedThreshold; // Whether to use the contacts dictionary private boolean mUseContactsDictionary; - private final Object mUseContactsLock = new Object(); - - private final HashSet<WeakReference<DictionaryCollection>> mDictionaryCollectionsList = - new HashSet<>(); + // TODO: make a spell checker option to block offensive words or not + private final SettingsValuesForSuggestion mSettingsValuesForSuggestion = + new SettingsValuesForSuggestion(true /* blockPotentiallyOffensive */, + true /* spaceAwareGestureEnabled */, + null /* additionalFeaturesSettingValues */); + private final Object mDictionaryLock = new Object(); public static final String SINGLE_QUOTE = "\u0027"; public static final String APOSTROPHE = "\u2019"; + public AndroidSpellCheckerService() { + super(); + for (int i = 0; i < MAX_NUM_OF_THREADS_READ_DICTIONARY; i++) { + mSessionIdPool.add(i); + } + } + @Override public void onCreate() { super.onCreate(); mRecommendedThreshold = @@ -106,52 +171,21 @@ public final class AndroidSpellCheckerService extends SpellCheckerService @Override public void onSharedPreferenceChanged(final SharedPreferences prefs, final String key) { if (!PREF_USE_CONTACTS_KEY.equals(key)) return; - synchronized(mUseContactsLock) { - mUseContactsDictionary = prefs.getBoolean(PREF_USE_CONTACTS_KEY, true); - if (mUseContactsDictionary) { - startUsingContactsDictionaryLocked(); - } else { - stopUsingContactsDictionaryLocked(); - } - } - } - - private void startUsingContactsDictionaryLocked() { - if (null == mContactsDictionary) { - // TODO: use the right locale for each session - mContactsDictionary = - new SynchronouslyLoadedContactsBinaryDictionary(this, Locale.getDefault()); - } - final Iterator<WeakReference<DictionaryCollection>> iterator = - mDictionaryCollectionsList.iterator(); - while (iterator.hasNext()) { - final WeakReference<DictionaryCollection> dictRef = iterator.next(); - final DictionaryCollection dict = dictRef.get(); - if (null == dict) { - iterator.remove(); - } else { - dict.addDictionary(mContactsDictionary); - } - } - } - - private void stopUsingContactsDictionaryLocked() { - if (null == mContactsDictionary) return; - final Dictionary contactsDict = mContactsDictionary; - // TODO: revert to the concrete type when USE_BINARY_CONTACTS_DICTIONARY is no longer needed - mContactsDictionary = null; - final Iterator<WeakReference<DictionaryCollection>> iterator = - mDictionaryCollectionsList.iterator(); - while (iterator.hasNext()) { - final WeakReference<DictionaryCollection> dictRef = iterator.next(); - final DictionaryCollection dict = dictRef.get(); - if (null == dict) { - iterator.remove(); - } else { - dict.removeDictionary(contactsDict); + final boolean useContactsDictionary = prefs.getBoolean(PREF_USE_CONTACTS_KEY, true); + if (useContactsDictionary != mUseContactsDictionary) { + mSemaphore.acquireUninterruptibly(MAX_NUM_OF_THREADS_READ_DICTIONARY); + try { + mUseContactsDictionary = useContactsDictionary; + for (final Locale locale : mCachedLocales) { + final DictionaryFacilitator dictionaryFacilitator = + mDictionaryFacilitatorCache.get(locale); + resetDictionariesForLocale(this /* context */, + dictionaryFacilitator, locale, mUseContactsDictionary); + } + } finally { + mSemaphore.release(MAX_NUM_OF_THREADS_READ_DICTIONARY); + } } - } - contactsDict.close(); } @Override @@ -203,11 +237,6 @@ public final class AndroidSpellCheckerService extends SpellCheckerService private final int mMaxLength; private int mLength = 0; - // The two following attributes are only ever filled if the requested max length - // is 0 (or less, which is treated the same). - private String mBestSuggestion = null; - private int mBestScore = Integer.MIN_VALUE; // As small as possible - SuggestionsGatherer(final String originalText, final float recommendedThreshold, final int maxLength) { mOriginalText = originalText; @@ -226,20 +255,6 @@ public final class AndroidSpellCheckerService extends SpellCheckerService // Weak <- insertIndex == 0, ..., insertIndex == mLength -> Strong if (insertIndex == 0 && mLength >= mMaxLength) { - // In the future, we may want to keep track of the best suggestion score even if - // we are asked for 0 suggestions. In this case, we can use the following - // (tested) code to keep it: - // If the maxLength is 0 (should never be less, but if it is, it's treated as 0) - // then we need to keep track of the best suggestion in mBestScore and - // mBestSuggestion. This is so that we know whether the best suggestion makes - // the score cutoff, since we need to know that to return a meaningful - // looksLikeTypo. - // if (0 >= mMaxLength) { - // if (score > mBestScore) { - // mBestScore = score; - // mBestSuggestion = new String(word, wordOffset, wordLength); - // } - // } return true; } @@ -264,20 +279,8 @@ public final class AndroidSpellCheckerService extends SpellCheckerService final String[] gatheredSuggestions; final boolean hasRecommendedSuggestions; if (0 == mLength) { - // TODO: the comment below describes what is intended, but in the practice - // mBestSuggestion is only ever set to null so it doesn't work. Fix this. - // Either we found no suggestions, or we found some BUT the max length was 0. - // If we found some mBestSuggestion will not be null. If it is null, then - // we found none, regardless of the max length. - if (null == mBestSuggestion) { - gatheredSuggestions = null; - hasRecommendedSuggestions = false; - } else { - gatheredSuggestions = EMPTY_STRING_ARRAY; - final float normalizedScore = BinaryDictionaryUtils.calcNormalizedScore( - mOriginalText, mBestSuggestion, mBestScore); - hasRecommendedSuggestions = (normalizedScore > mRecommendedThreshold); - } + gatheredSuggestions = null; + hasRecommendedSuggestions = false; } else { if (DBG) { if (mLength != mSuggestions.size()) { @@ -323,85 +326,114 @@ public final class AndroidSpellCheckerService extends SpellCheckerService } } - @Override - public boolean onUnbind(final Intent intent) { - closeAllDictionaries(); - return false; + public boolean isValidWord(final Locale locale, final String word) { + mSemaphore.acquireUninterruptibly(); + try { + DictionaryFacilitator dictionaryFacilitatorForLocale = + getDictionaryFacilitatorForLocaleLocked(locale); + return dictionaryFacilitatorForLocale.isValidWord(word, false /* igroreCase */); + } finally { + mSemaphore.release(); + } } - private void closeAllDictionaries() { - final Map<String, DictionaryPool> oldPools = mDictionaryPools; - mDictionaryPools = CollectionUtils.newSynchronizedTreeMap(); - final Map<String, UserBinaryDictionary> oldUserDictionaries = mUserDictionaries; - mUserDictionaries = CollectionUtils.newSynchronizedTreeMap(); - new Thread("spellchecker_close_dicts") { - @Override - public void run() { - // Contacts dictionary can be closed multiple times here. If the dictionary is - // already closed, extra closings are no-ops, so it's safe. - for (DictionaryPool pool : oldPools.values()) { - pool.close(); - } - for (Dictionary dict : oldUserDictionaries.values()) { - dict.close(); - } - synchronized (mUseContactsLock) { - if (null != mContactsDictionary) { - // The synchronously loaded contacts dictionary should have been in one - // or several pools, but it is shielded against multiple closing and it's - // safe to call it several times. - final ContactsBinaryDictionary dictToClose = mContactsDictionary; - // TODO: revert to the concrete type when USE_BINARY_CONTACTS_DICTIONARY - // is no longer needed - mContactsDictionary = null; - dictToClose.close(); - } + public SuggestionResults getSuggestionResults(final Locale locale, final WordComposer composer, + final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo) { + Integer sessionId = null; + mSemaphore.acquireUninterruptibly(); + try { + sessionId = mSessionIdPool.poll(); + DictionaryFacilitator dictionaryFacilitatorForLocale = + getDictionaryFacilitatorForLocaleLocked(locale); + return dictionaryFacilitatorForLocale.getSuggestionResults(composer, prevWordsInfo, + proximityInfo, mSettingsValuesForSuggestion, sessionId); + } finally { + if (sessionId != null) { + mSessionIdPool.add(sessionId); + } + mSemaphore.release(); + } + } + + public boolean hasMainDictionaryForLocale(final Locale locale) { + mSemaphore.acquireUninterruptibly(); + try { + final DictionaryFacilitator dictionaryFacilitator = + getDictionaryFacilitatorForLocaleLocked(locale); + return dictionaryFacilitator.hasInitializedMainDictionary(); + } finally { + mSemaphore.release(); + } + } + + private DictionaryFacilitator getDictionaryFacilitatorForLocaleLocked(final Locale locale) { + DictionaryFacilitator dictionaryFacilitatorForLocale = + mDictionaryFacilitatorCache.get(locale); + if (dictionaryFacilitatorForLocale == null) { + dictionaryFacilitatorForLocale = new DictionaryFacilitator(); + mDictionaryFacilitatorCache.put(locale, dictionaryFacilitatorForLocale); + mCachedLocales.add(locale); + resetDictionariesForLocale(this /* context */, dictionaryFacilitatorForLocale, + locale, mUseContactsDictionary); + } + return dictionaryFacilitatorForLocale; + } + + private static void resetDictionariesForLocale(final Context context, + final DictionaryFacilitator dictionaryFacilitator, final Locale locale, + final boolean useContactsDictionary) { + dictionaryFacilitator.resetDictionariesWithDictNamePrefix(context, locale, + useContactsDictionary, false /* usePersonalizedDicts */, + false /* forceReloadMainDictionary */, null /* listener */, + DICTIONARY_NAME_PREFIX); + for (int i = 0; i < MAX_RETRY_COUNT_FOR_WAITING_FOR_LOADING_DICT; i++) { + try { + dictionaryFacilitator.waitForLoadingMainDictionary( + WAIT_FOR_LOADING_MAIN_DICT_IN_MILLISECONDS, TimeUnit.MILLISECONDS); + return; + } catch (final InterruptedException e) { + Log.i(TAG, "Interrupted during waiting for loading main dictionary.", e); + if (i < MAX_RETRY_COUNT_FOR_WAITING_FOR_LOADING_DICT - 1) { + Log.i(TAG, "Retry", e); + } else { + Log.w(TAG, "Give up retrying. Retried " + + MAX_RETRY_COUNT_FOR_WAITING_FOR_LOADING_DICT + " times.", e); } } - }.start(); + } + } + + @Override + public boolean onUnbind(final Intent intent) { + mSemaphore.acquireUninterruptibly(MAX_NUM_OF_THREADS_READ_DICTIONARY); + try { + mDictionaryFacilitatorCache.evictAll(); + mCachedLocales.clear(); + } finally { + mSemaphore.release(MAX_NUM_OF_THREADS_READ_DICTIONARY); + } + mKeyboardCache.clear(); + return false; } - public DictionaryPool getDictionaryPool(final String locale) { - DictionaryPool pool = mDictionaryPools.get(locale); - if (null == pool) { - final Locale localeObject = LocaleUtils.constructLocaleFromString(locale); - pool = new DictionaryPool(POOL_SIZE, this, localeObject); - mDictionaryPools.put(locale, pool); + public Keyboard getKeyboardForLocale(final Locale locale) { + Keyboard keyboard = mKeyboardCache.get(locale); + if (keyboard == null) { + keyboard = createKeyboardForLocale(locale); + if (keyboard != null) { + mKeyboardCache.put(locale, keyboard); + } } - return pool; + return keyboard; } - public DictAndKeyboard createDictAndKeyboard(final Locale locale) { + private Keyboard createKeyboardForLocale(final Locale locale) { final int script = ScriptUtils.getScriptFromSpellCheckerLocale(locale); final String keyboardLayoutName = getKeyboardLayoutNameForScript(script); final InputMethodSubtype subtype = AdditionalSubtypeUtils.createDummyAdditionalSubtype( locale.toString(), keyboardLayoutName); final KeyboardLayoutSet keyboardLayoutSet = createKeyboardSetForSpellChecker(subtype); - - final DictionaryCollection dictionaryCollection = - DictionaryFactory.createMainDictionaryFromManager(this, locale, - true /* useFullEditDistance */); - final String localeStr = locale.toString(); - UserBinaryDictionary userDictionary = mUserDictionaries.get(localeStr); - if (null == userDictionary) { - userDictionary = new SynchronouslyLoadedUserBinaryDictionary(this, locale, true); - mUserDictionaries.put(localeStr, userDictionary); - } - dictionaryCollection.addDictionary(userDictionary); - synchronized (mUseContactsLock) { - if (mUseContactsDictionary) { - if (null == mContactsDictionary) { - // TODO: use the right locale. We can't do it right now because the - // spell checker is reusing the contacts dictionary across sessions - // without regard for their locale, so we need to fix that first. - mContactsDictionary = new SynchronouslyLoadedContactsBinaryDictionary(this, - Locale.getDefault()); - } - } - dictionaryCollection.addDictionary(mContactsDictionary); - mDictionaryCollectionsList.add(new WeakReference<>(dictionaryCollection)); - } - return new DictAndKeyboard(dictionaryCollection, keyboardLayoutSet); + return keyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_ALPHABET); } private KeyboardLayoutSet createKeyboardSetForSpellChecker(final InputMethodSubtype subtype) { diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java index 08adaf844..19c1dd0a5 100644 --- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java +++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java @@ -28,8 +28,9 @@ import android.view.textservice.SuggestionsInfo; import android.view.textservice.TextInfo; import com.android.inputmethod.compat.SuggestionsInfoCompatUtils; +import com.android.inputmethod.keyboard.Keyboard; +import com.android.inputmethod.keyboard.ProximityInfo; import com.android.inputmethod.latin.Constants; -import com.android.inputmethod.latin.Dictionary; import com.android.inputmethod.latin.PrevWordsInfo; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.WordComposer; @@ -39,17 +40,15 @@ import com.android.inputmethod.latin.utils.CoordinateUtils; import com.android.inputmethod.latin.utils.LocaleUtils; import com.android.inputmethod.latin.utils.ScriptUtils; import com.android.inputmethod.latin.utils.StringUtils; +import com.android.inputmethod.latin.utils.SuggestionResults; -import java.util.ArrayList; import java.util.Locale; public abstract class AndroidWordLevelSpellCheckerSession extends Session { private static final String TAG = AndroidWordLevelSpellCheckerSession.class.getSimpleName(); private static final boolean DBG = false; - // Immutable, but need the locale which is not available in the constructor yet - private DictionaryPool mDictionaryPool; - // Likewise + // Immutable, but not available in the constructor. private Locale mLocale; // Cache this for performance private int mScript; // One of SCRIPT_LATIN or SCRIPT_CYRILLIC for now. @@ -116,7 +115,6 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session { @Override public void onCreate() { final String localeString = getLocale(); - mDictionaryPool = mService.getDictionaryPool(localeString); mLocale = LocaleUtils.constructLocaleFromString(localeString); mScript = ScriptUtils.getScriptFromSpellCheckerLocale(mLocale); } @@ -191,24 +189,24 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session { * If the "TEXT" is fully upper case, we test the exact string "TEXT", the lower-cased * version of it "text" and the capitalized version of it "Text". */ - private boolean isInDictForAnyCapitalization(final Dictionary dict, final String text, - final int capitalizeType) { + private boolean isInDictForAnyCapitalization(final String text, final int capitalizeType) { // If the word is in there as is, then it's in the dictionary. If not, we'll test lower // case versions, but only if the word is not already all-lower case or mixed case. - if (dict.isValidWord(text)) return true; + if (mService.isValidWord(mLocale, text)) return true; if (StringUtils.CAPITALIZE_NONE == capitalizeType) return false; // If we come here, we have a capitalized word (either First- or All-). // Downcase the word and look it up again. If the word is only capitalized, we // tested all possibilities, so if it's still negative we can return false. final String lowerCaseText = text.toLowerCase(mLocale); - if (dict.isValidWord(lowerCaseText)) return true; + if (mService.isValidWord(mLocale, lowerCaseText)) return true; if (StringUtils.CAPITALIZE_FIRST == capitalizeType) return false; // If the lower case version is not in the dictionary, it's still possible // that we have an all-caps version of a word that needs to be capitalized // according to the dictionary. E.g. "GERMANS" only exists in the dictionary as "Germans". - return dict.isValidWord(StringUtils.capitalizeFirstAndDowncaseRest(lowerCaseText, mLocale)); + return mService.isValidWord(mLocale, + StringUtils.capitalizeFirstAndDowncaseRest(lowerCaseText, mLocale)); } // Note : this must be reentrant @@ -236,46 +234,28 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session { return new SuggestionsInfo( cachedSuggestionsParams.mFlags, cachedSuggestionsParams.mSuggestions); } - final int checkability = getCheckabilityInScript(inText, mScript); if (CHECKABILITY_CHECKABLE != checkability) { - DictAndKeyboard dictInfo = null; - try { - dictInfo = mDictionaryPool.pollWithDefaultTimeout(); - if (!DictionaryPool.isAValidDictionary(dictInfo)) { - return AndroidSpellCheckerService.getNotInDictEmptySuggestions( - false /* reportAsTypo */); - } - if (CHECKABILITY_CONTAINS_PERIOD == checkability) { - final String[] splitText = inText.split(Constants.REGEXP_PERIOD); - boolean allWordsAreValid = true; - for (final String word : splitText) { - if (!dictInfo.mDictionary.isValidWord(word)) { - allWordsAreValid = false; - break; - } - } - if (allWordsAreValid) { - return new SuggestionsInfo(SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO - | SuggestionsInfo.RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS, - new String[] { - TextUtils.join(Constants.STRING_SPACE, splitText), - TextUtils.join(Constants.STRING_PERIOD_AND_SPACE, - splitText) }); + if (CHECKABILITY_CONTAINS_PERIOD == checkability) { + final String[] splitText = inText.split(Constants.REGEXP_PERIOD); + boolean allWordsAreValid = true; + for (final String word : splitText) { + if (!mService.isValidWord(mLocale, word)) { + allWordsAreValid = false; + break; } } - return dictInfo.mDictionary.isValidWord(inText) - ? AndroidSpellCheckerService.getInDictEmptySuggestions() - : AndroidSpellCheckerService.getNotInDictEmptySuggestions( - CHECKABILITY_CONTAINS_PERIOD == checkability - /* reportAsTypo */); - } finally { - if (null != dictInfo) { - if (!mDictionaryPool.offer(dictInfo)) { - Log.e(TAG, "Can't re-insert a dictionary into its pool"); - } + if (allWordsAreValid) { + return new SuggestionsInfo(SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO + | SuggestionsInfo.RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS, + new String[] { + TextUtils.join(Constants.STRING_SPACE, splitText) }); } } + return mService.isValidWord(mLocale, inText) ? + AndroidSpellCheckerService.getInDictEmptySuggestions() : + AndroidSpellCheckerService.getNotInDictEmptySuggestions( + CHECKABILITY_CONTAINS_PERIOD == checkability /* reportAsTypo */); } final String text = inText.replaceAll( AndroidSpellCheckerService.APOSTROPHE, AndroidSpellCheckerService.SINGLE_QUOTE); @@ -289,48 +269,34 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session { final int capitalizeType = StringUtils.getCapitalizationType(text); boolean isInDict = true; - DictAndKeyboard dictInfo = null; - try { - dictInfo = mDictionaryPool.pollWithDefaultTimeout(); - if (!DictionaryPool.isAValidDictionary(dictInfo)) { - return AndroidSpellCheckerService.getNotInDictEmptySuggestions( - false /* reportAsTypo */); - } - final WordComposer composer = new WordComposer(); - final int[] codePoints = StringUtils.toCodePointArray(text); - final int[] coordinates; - if (null == dictInfo.mKeyboard) { - coordinates = CoordinateUtils.newCoordinateArray(codePoints.length, - Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE); - } else { - coordinates = dictInfo.mKeyboard.getCoordinates(codePoints); - } - composer.setComposingWord(codePoints, coordinates); - // TODO: make a spell checker option to block offensive words or not - final ArrayList<SuggestedWordInfo> suggestions = - dictInfo.mDictionary.getSuggestions(composer, prevWordsInfo, - dictInfo.getProximityInfo(), - new SettingsValuesForSuggestion( - true /* blockPotentiallyOffensive */, - true /* spaceAwareGestureEnabled */, - null /* additionalFeaturesSettingValues */), - 0 /* sessionId */, - null /* inOutLanguageWeight */); - if (suggestions != null) { - for (final SuggestedWordInfo suggestion : suggestions) { - final String suggestionStr = suggestion.mWord; - suggestionsGatherer.addWord(suggestionStr.toCharArray(), null, 0, - suggestionStr.length(), suggestion.mScore); - } - } - isInDict = isInDictForAnyCapitalization(dictInfo.mDictionary, text, capitalizeType); - } finally { - if (null != dictInfo) { - if (!mDictionaryPool.offer(dictInfo)) { - Log.e(TAG, "Can't re-insert a dictionary into its pool"); - } + if (!mService.hasMainDictionaryForLocale(mLocale)) { + return AndroidSpellCheckerService.getNotInDictEmptySuggestions( + false /* reportAsTypo */); + } + final Keyboard keyboard = mService.getKeyboardForLocale(mLocale); + final WordComposer composer = new WordComposer(); + final int[] codePoints = StringUtils.toCodePointArray(text); + final int[] coordinates; + final ProximityInfo proximityInfo; + if (null == keyboard) { + coordinates = CoordinateUtils.newCoordinateArray(codePoints.length, + Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE); + proximityInfo = null; + } else { + coordinates = keyboard.getCoordinates(codePoints); + proximityInfo = keyboard.getProximityInfo(); + } + composer.setComposingWord(codePoints, coordinates); + final SuggestionResults suggestionResults = mService.getSuggestionResults( + mLocale, composer, prevWordsInfo, proximityInfo); + if (suggestionResults != null) { + for (final SuggestedWordInfo suggestion : suggestionResults) { + final String suggestionStr = suggestion.mWord; + suggestionsGatherer.addWord(suggestionStr.toCharArray(), null, 0, + suggestionStr.length(), suggestion.mScore); } } + isInDict = isInDictForAnyCapitalization(text, capitalizeType); final SuggestionsGatherer.Result result = suggestionsGatherer.getResults( capitalizeType, mLocale); diff --git a/java/src/com/android/inputmethod/latin/spellcheck/DictAndKeyboard.java b/java/src/com/android/inputmethod/latin/spellcheck/DictAndKeyboard.java deleted file mode 100644 index b33739fc1..000000000 --- a/java/src/com/android/inputmethod/latin/spellcheck/DictAndKeyboard.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2011 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.spellcheck; - -import com.android.inputmethod.keyboard.Keyboard; -import com.android.inputmethod.keyboard.KeyboardId; -import com.android.inputmethod.keyboard.KeyboardLayoutSet; -import com.android.inputmethod.keyboard.ProximityInfo; -import com.android.inputmethod.latin.Dictionary; - -/** - * A container for a Dictionary and a Keyboard. - */ -public final class DictAndKeyboard { - public final Dictionary mDictionary; - public final Keyboard mKeyboard; - - public DictAndKeyboard( - final Dictionary dictionary, final KeyboardLayoutSet keyboardLayoutSet) { - mDictionary = dictionary; - if (keyboardLayoutSet == null) { - mKeyboard = null; - return; - } - mKeyboard = keyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_ALPHABET); - } - - public ProximityInfo getProximityInfo() { - return mKeyboard == null ? null : mKeyboard.getProximityInfo(); - } -} diff --git a/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java b/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java deleted file mode 100644 index eb85d4969..000000000 --- a/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (C) 2011 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.spellcheck; - -import android.util.Log; - -import com.android.inputmethod.keyboard.ProximityInfo; -import com.android.inputmethod.latin.Dictionary; -import com.android.inputmethod.latin.PrevWordsInfo; -import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; -import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion; -import com.android.inputmethod.latin.WordComposer; - -import java.util.ArrayList; -import java.util.Locale; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.TimeUnit; - -/** - * A blocking queue that creates dictionaries up to a certain limit as necessary. - * As a deadlock-detecting device, if waiting for more than TIMEOUT = 3 seconds, we - * will clear the queue and generate its contents again. This is transparent for - * the client code, but may help with sloppy clients. - */ -@SuppressWarnings("serial") -public final class DictionaryPool extends LinkedBlockingQueue<DictAndKeyboard> { - private final static String TAG = DictionaryPool.class.getSimpleName(); - // How many seconds we wait for a dictionary to become available. Past this delay, we give up in - // fear some bug caused a deadlock, and reset the whole pool. - private final static int TIMEOUT = 3; - private final AndroidSpellCheckerService mService; - private final int mMaxSize; - private final Locale mLocale; - private int mSize; - private volatile boolean mClosed; - final static ArrayList<SuggestedWordInfo> noSuggestions = new ArrayList<>(); - private final static DictAndKeyboard dummyDict = new DictAndKeyboard( - new Dictionary(Dictionary.TYPE_MAIN) { - // TODO: this dummy dictionary should be a singleton in the Dictionary class. - @Override - public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer, - final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo, - final SettingsValuesForSuggestion settingsValuesForSuggestion, - final int sessionId, final float[] inOutLanguageWeight) { - return noSuggestions; - } - @Override - public boolean isInDictionary(final String word) { - // This is never called. However if for some strange reason it ever gets - // called, returning true is less destructive (it will not underline the - // word in red). - return true; - } - }, null); - - static public boolean isAValidDictionary(final DictAndKeyboard dictInfo) { - return null != dictInfo && dummyDict != dictInfo; - } - - public DictionaryPool(final int maxSize, final AndroidSpellCheckerService service, - final Locale locale) { - super(); - mMaxSize = maxSize; - mService = service; - mLocale = locale; - mSize = 0; - mClosed = false; - } - - @Override - public DictAndKeyboard poll(final long timeout, final TimeUnit unit) - throws InterruptedException { - final DictAndKeyboard dict = poll(); - if (null != dict) return dict; - synchronized(this) { - if (mSize >= mMaxSize) { - // Our pool is already full. Wait until some dictionary is ready, or TIMEOUT - // expires to avoid a deadlock. - final DictAndKeyboard result = super.poll(timeout, unit); - if (null == result) { - Log.e(TAG, "Deadlock detected ! Resetting dictionary pool"); - clear(); - mSize = 1; - return mService.createDictAndKeyboard(mLocale); - } else { - return result; - } - } else { - ++mSize; - return mService.createDictAndKeyboard(mLocale); - } - } - } - - // Convenience method - public DictAndKeyboard pollWithDefaultTimeout() { - try { - return poll(TIMEOUT, TimeUnit.SECONDS); - } catch (InterruptedException e) { - return null; - } - } - - public void close() { - synchronized(this) { - mClosed = true; - for (DictAndKeyboard dict : this) { - dict.mDictionary.close(); - } - clear(); - } - } - - @Override - public boolean offer(final DictAndKeyboard dict) { - if (mClosed) { - dict.mDictionary.close(); - return super.offer(dummyDict); - } else { - return super.offer(dict); - } - } -} diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java deleted file mode 100644 index 688b184cb..000000000 --- a/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2012 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.spellcheck; - -import android.content.Context; - -import com.android.inputmethod.keyboard.ProximityInfo; -import com.android.inputmethod.latin.ContactsBinaryDictionary; -import com.android.inputmethod.latin.PrevWordsInfo; -import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; -import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion; -import com.android.inputmethod.latin.WordComposer; - -import java.util.ArrayList; -import java.util.Locale; - -public final class SynchronouslyLoadedContactsBinaryDictionary extends ContactsBinaryDictionary { - private static final String NAME = "spellcheck_contacts"; - private final Object mLock = new Object(); - - public SynchronouslyLoadedContactsBinaryDictionary(final Context context, final Locale locale) { - super(context, locale, null /* dictFile */, NAME); - } - - @Override - public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer codes, - final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo, - final SettingsValuesForSuggestion settingsValuesForSuggestion, - final int sessionId, final float[] inOutLanguageWeight) { - synchronized (mLock) { - return super.getSuggestions(codes, prevWordsInfo, proximityInfo, - settingsValuesForSuggestion, sessionId, inOutLanguageWeight); - } - } - - @Override - public boolean isInDictionary(final String word) { - synchronized (mLock) { - return super.isInDictionary(word); - } - } -} diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java b/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java deleted file mode 100644 index ff71f59f8..000000000 --- a/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2012 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.spellcheck; - -import android.content.Context; - -import com.android.inputmethod.keyboard.ProximityInfo; -import com.android.inputmethod.latin.PrevWordsInfo; -import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; -import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion; -import com.android.inputmethod.latin.UserBinaryDictionary; -import com.android.inputmethod.latin.WordComposer; - -import java.util.ArrayList; -import java.util.Locale; - -public final class SynchronouslyLoadedUserBinaryDictionary extends UserBinaryDictionary { - private static final String NAME = "spellcheck_user"; - private final Object mLock = new Object(); - - public SynchronouslyLoadedUserBinaryDictionary(final Context context, final Locale locale) { - this(context, locale, false /* alsoUseMoreRestrictiveLocales */); - } - - public SynchronouslyLoadedUserBinaryDictionary(final Context context, final Locale locale, - final boolean alsoUseMoreRestrictiveLocales) { - super(context, locale, alsoUseMoreRestrictiveLocales, null /* dictFile */, NAME); - } - - @Override - public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer codes, - final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo, - final SettingsValuesForSuggestion settingsValuesForSuggestion, - final int sessionId, final float[] inOutLanguageWeight) { - synchronized (mLock) { - return super.getSuggestions(codes, prevWordsInfo, proximityInfo, - settingsValuesForSuggestion, sessionId, inOutLanguageWeight); - } - } - - @Override - public boolean isInDictionary(final String word) { - synchronized (mLock) { - return super.isInDictionary(word); - } - } -} |