diff options
45 files changed, 196 insertions, 609 deletions
diff --git a/java/res/color/emoji_tab_label_color_gb.xml b/java/res/color/emoji_tab_label_color_gb.xml deleted file mode 100644 index e1d2f715e..000000000 --- a/java/res/color/emoji_tab_label_color_gb.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2013, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item - android:state_focused="true" - android:color="@color/key_text_color_gb" /> - <item - android:state_pressed="true" - android:color="@color/key_text_color_gb" /> - <item - android:state_selected="true" - android:color="@color/key_text_color_gb" /> - <item - android:color="@color/key_text_inactivated_color_gb" /> -</selector> diff --git a/java/res/drawable-hdpi/keyboard_background_gb.9.png b/java/res/drawable-hdpi/keyboard_background_gb.9.png Binary files differdeleted file mode 100644 index fa3d449f7..000000000 --- a/java/res/drawable-hdpi/keyboard_background_gb.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_gb.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_gb.9.png Binary files differdeleted file mode 100644 index baff80950..000000000 --- a/java/res/drawable-hdpi/keyboard_popup_panel_background_gb.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/keyboard_suggest_strip_gb.9.png b/java/res/drawable-hdpi/keyboard_suggest_strip_gb.9.png Binary files differdeleted file mode 100644 index 7cab5a899..000000000 --- a/java/res/drawable-hdpi/keyboard_suggest_strip_gb.9.png +++ /dev/null diff --git a/java/res/drawable-hdpi/sym_keyboard_space_led_gb.9.png b/java/res/drawable-hdpi/sym_keyboard_space_led_gb.9.png Binary files differdeleted file mode 100644 index c76f64b94..000000000 --- a/java/res/drawable-hdpi/sym_keyboard_space_led_gb.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_background_gb.9.png b/java/res/drawable-mdpi/keyboard_background_gb.9.png Binary files differdeleted file mode 100644 index 4f81704c4..000000000 --- a/java/res/drawable-mdpi/keyboard_background_gb.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_gb.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_gb.9.png Binary files differdeleted file mode 100644 index 0d9ab97f0..000000000 --- a/java/res/drawable-mdpi/keyboard_popup_panel_background_gb.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/keyboard_suggest_strip_gb.9.png b/java/res/drawable-mdpi/keyboard_suggest_strip_gb.9.png Binary files differdeleted file mode 100644 index fa6c0feff..000000000 --- a/java/res/drawable-mdpi/keyboard_suggest_strip_gb.9.png +++ /dev/null diff --git a/java/res/drawable-mdpi/sym_keyboard_space_led_gb.9.png b/java/res/drawable-mdpi/sym_keyboard_space_led_gb.9.png Binary files differdeleted file mode 100644 index 1c1ca2cc7..000000000 --- a/java/res/drawable-mdpi/sym_keyboard_space_led_gb.9.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/keyboard_background_gb.9.png b/java/res/drawable-xhdpi/keyboard_background_gb.9.png Binary files differdeleted file mode 100644 index 27b7a108c..000000000 --- a/java/res/drawable-xhdpi/keyboard_background_gb.9.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background_gb.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background_gb.9.png Binary files differdeleted file mode 100644 index 79f7ab00a..000000000 --- a/java/res/drawable-xhdpi/keyboard_popup_panel_background_gb.9.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/keyboard_suggest_strip_gb.9.png b/java/res/drawable-xhdpi/keyboard_suggest_strip_gb.9.png Binary files differdeleted file mode 100644 index 1b568df03..000000000 --- a/java/res/drawable-xhdpi/keyboard_suggest_strip_gb.9.png +++ /dev/null diff --git a/java/res/drawable-xhdpi/sym_keyboard_space_led_gb.9.png b/java/res/drawable-xhdpi/sym_keyboard_space_led_gb.9.png Binary files differdeleted file mode 100644 index 6525fefab..000000000 --- a/java/res/drawable-xhdpi/sym_keyboard_space_led_gb.9.png +++ /dev/null diff --git a/java/res/drawable/btn_keyboard_key_functional_gb.xml b/java/res/drawable/btn_keyboard_key_functional_gb.xml deleted file mode 100644 index 431359c20..000000000 --- a/java/res/drawable/btn_keyboard_key_functional_gb.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2013 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <!-- Functional keys. --> - <item android:state_pressed="true" - android:drawable="@drawable/btn_keyboard_key_dark_pressed" /> - <item android:drawable="@drawable/btn_keyboard_key_dark_normal" /> -</selector> diff --git a/java/res/drawable/btn_keyboard_key_gb.xml b/java/res/drawable/btn_keyboard_key_gb.xml deleted file mode 100644 index 3fc253e85..000000000 --- a/java/res/drawable/btn_keyboard_key_gb.xml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2010 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <!-- Functional keys. --> - <item android:state_single="true" android:state_pressed="true" - android:drawable="@drawable/btn_keyboard_key_dark_pressed" /> - <item android:state_single="true" - android:drawable="@drawable/btn_keyboard_key_dark_normal" /> - - <!-- Action keys. --> - <item android:state_active="true" android:state_pressed="true" - android:drawable="@drawable/btn_keyboard_key_dark_pressed" /> - <item android:state_active="true" - android:drawable="@drawable/btn_keyboard_key_dark_normal" /> - - <!-- 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_dark_pressed_on" /> - <item android:state_checkable="true" android:state_pressed="true" - android:drawable="@drawable/btn_keyboard_key_dark_pressed_off" /> - <item android:state_checkable="true" android:state_checked="true" - android:drawable="@drawable/btn_keyboard_key_dark_normal_on" /> - <item android:state_checkable="true" - android:drawable="@drawable/btn_keyboard_key_dark_normal_off" /> - - <!-- Empty background keys. --> - <item android:state_empty="true" - android:drawable="@drawable/transparent" /> - - <!-- Normal keys. --> - <item android:state_pressed="true" - android:drawable="@drawable/btn_keyboard_key_light_pressed" /> - <item android:drawable="@drawable/btn_keyboard_key_light_normal" /> -</selector> diff --git a/java/res/drawable/btn_keyboard_key_popup_gb.xml b/java/res/drawable/btn_keyboard_key_popup_gb.xml deleted file mode 100644 index 9e3670d22..000000000 --- a/java/res/drawable/btn_keyboard_key_popup_gb.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- 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. ---> - -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_pressed="true" - android:drawable="@drawable/btn_keyboard_key_light_popup_selected" /> - <item android:drawable="@drawable/transparent" /> -</selector> diff --git a/java/res/drawable/btn_keyboard_spacebar_gb.xml b/java/res/drawable/btn_keyboard_spacebar_gb.xml deleted file mode 100644 index 4d51f3c9c..000000000 --- a/java/res/drawable/btn_keyboard_spacebar_gb.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2013 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_pressed="true" - android:drawable="@drawable/btn_keyboard_key_light_pressed" /> - <item android:drawable="@drawable/btn_keyboard_key_light_normal" /> -</selector> diff --git a/java/res/drawable/btn_suggestion_gb.xml b/java/res/drawable/btn_suggestion_gb.xml deleted file mode 100644 index cde12fe55..000000000 --- a/java/res/drawable/btn_suggestion_gb.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 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. -*/ ---> - -<selector - xmlns:android="http://schemas.android.com/apk/res/android" -> - <item - android:state_pressed="true" - android:drawable="@drawable/btn_suggestion_pressed" /> -</selector> diff --git a/java/res/drawable/keyboard_key_feedback_gb.xml b/java/res/drawable/keyboard_key_feedback_gb.xml deleted file mode 100644 index 397e948d8..000000000 --- a/java/res/drawable/keyboard_key_feedback_gb.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2010 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<selector - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" -> - <item latin:state_has_morekeys="true" - android:drawable="@drawable/keyboard_key_feedback_more_background" /> - <item android:drawable="@drawable/keyboard_key_feedback_background" /> -</selector> diff --git a/java/res/values-land/config.xml b/java/res/values-land/config.xml index ade7d002c..43ae068f2 100644 --- a/java/res/values-land/config.xml +++ b/java/res/values-land/config.xml @@ -33,14 +33,6 @@ <!-- config_more_keys_keyboard_key_height x 1.2 --> <dimen name="config_more_keys_keyboard_slide_allowance">53.76dp</dimen> - <fraction name="config_keyboard_top_padding_gb">1.818%p</fraction> - <fraction name="config_keyboard_bottom_padding_gb">0.0%p</fraction> - <fraction name="config_key_vertical_gap_gb">5.941%p</fraction> - <fraction name="config_key_horizontal_gap_gb">0.997%p</fraction> - <!-- config_more_keys_keyboard_key_height x -1.0 --> - <dimen name="config_more_keys_keyboard_vertical_correction_gb">-44.8dp</dimen> - <dimen name="config_key_preview_offset_gb">0.0dp</dimen> - <fraction name="config_keyboard_top_padding_holo">2.727%p</fraction> <fraction name="config_keyboard_bottom_padding_holo">0.0%p</fraction> <fraction name="config_key_vertical_gap_holo">5.368%p</fraction> diff --git a/java/res/values-sw600dp-land/config.xml b/java/res/values-sw600dp-land/config.xml index bd123c499..00edde161 100644 --- a/java/res/values-sw600dp-land/config.xml +++ b/java/res/values-sw600dp-land/config.xml @@ -27,11 +27,6 @@ <dimen name="config_more_keys_keyboard_key_height">81.9dp</dimen> - <fraction name="config_keyboard_top_padding_gb">2.444%p</fraction> - <fraction name="config_keyboard_bottom_padding_gb">0.0%p</fraction> - <fraction name="config_key_vertical_gap_gb">5.200%p</fraction> - <fraction name="config_key_horizontal_gap_gb">1.447%p</fraction> - <fraction name="config_keyboard_top_padding_holo">2.727%p</fraction> <fraction name="config_keyboard_bottom_padding_holo">0.0%p</fraction> <fraction name="config_key_vertical_gap_holo">4.5%p</fraction> diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml index 700350c36..3bd843928 100644 --- a/java/res/values-sw600dp/config.xml +++ b/java/res/values-sw600dp/config.xml @@ -34,14 +34,6 @@ <!-- config_more_keys_keyboard_key_height x 1.2 --> <dimen name="config_more_keys_keyboard_slide_allowance">98.3dp</dimen> - <fraction name="config_keyboard_top_padding_gb">2.291%p</fraction> - <fraction name="config_keyboard_bottom_padding_gb">0.0%p</fraction> - <fraction name="config_key_vertical_gap_gb">4.625%p</fraction> - <fraction name="config_key_horizontal_gap_gb">2.113%p</fraction> - <!-- config_more_keys_keyboard_key_height x -1.0 --> - <dimen name="config_more_keys_keyboard_vertical_correction_gb">-81.9dp</dimen> - <dimen name="config_key_preview_offset_gb">16.0dp</dimen> - <fraction name="config_keyboard_top_padding_holo">2.335%p</fraction> <fraction name="config_keyboard_bottom_padding_holo">4.0%p</fraction> <fraction name="config_key_vertical_gap_holo">4.5%p</fraction> diff --git a/java/res/values-sw600dp/touch-position-correction.xml b/java/res/values-sw600dp/touch-position-correction.xml index 932b8fc72..6aaa605a6 100644 --- a/java/res/values-sw600dp/touch-position-correction.xml +++ b/java/res/values-sw600dp/touch-position-correction.xml @@ -37,17 +37,6 @@ </string-array> <string-array - name="touch_position_correction_data_gb" - translatable="false" - > - <!-- The default touch position data (See com.android.inputmethod.keyboard.ProximityInfo) - correctionX = 0.0f - correctionY = 0.0f - correctionR = DEFAULT_TOUCH_POSITION_CORRECTION_RADIUS - --> - </string-array> - - <string-array name="touch_position_correction_data_holo" translatable="false" > diff --git a/java/res/values-sw768dp-land/config.xml b/java/res/values-sw768dp-land/config.xml index 4040e29f7..3878a9e84 100644 --- a/java/res/values-sw768dp-land/config.xml +++ b/java/res/values-sw768dp-land/config.xml @@ -25,11 +25,6 @@ <dimen name="config_default_keyboard_height">365.4dp</dimen> <fraction name="config_min_keyboard_height">45%p</fraction> - <fraction name="config_keyboard_top_padding_gb">1.896%p</fraction> - <fraction name="config_keyboard_bottom_padding_gb">0.0%p</fraction> - <fraction name="config_key_vertical_gap_gb">3.896%p</fraction> - <fraction name="config_key_horizontal_gap_gb">1.195%p</fraction> - <fraction name="config_keyboard_top_padding_holo">1.896%p</fraction> <fraction name="config_keyboard_bottom_padding_holo">0.0%p</fraction> <fraction name="config_key_vertical_gap_holo">3.690%p</fraction> diff --git a/java/res/values-sw768dp/config.xml b/java/res/values-sw768dp/config.xml index 33286c686..34eec38b8 100644 --- a/java/res/values-sw768dp/config.xml +++ b/java/res/values-sw768dp/config.xml @@ -26,14 +26,6 @@ <fraction name="config_max_keyboard_height">46%p</fraction> <fraction name="config_min_keyboard_height">-35.0%p</fraction> - <fraction name="config_keyboard_top_padding_gb">2.291%p</fraction> - <fraction name="config_keyboard_bottom_padding_gb">0.0%p</fraction> - <fraction name="config_key_vertical_gap_gb">4.687%p</fraction> - <fraction name="config_key_horizontal_gap_gb">1.272%p</fraction> - <!-- config_more_keys_keyboard_key_height x -1.0 --> - <dimen name="config_more_keys_keyboard_vertical_correction_gb">-81.9dp</dimen> - <dimen name="config_key_preview_offset_gb">16.0dp</dimen> - <fraction name="config_keyboard_top_padding_holo">2.335%p</fraction> <fraction name="config_keyboard_bottom_padding_holo">0.0%p</fraction> <fraction name="config_key_vertical_gap_holo">3.312%p</fraction> diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml index 517174495..824928c6b 100644 --- a/java/res/values/colors.xml +++ b/java/res/values/colors.xml @@ -19,20 +19,6 @@ --> <resources xmlns:android="http://schemas.android.com/apk/res/android"> - <!-- Color resources for Gingerbread theme. --> - <color name="highlight_color_gb">#FFFCAE00</color> - <color name="typed_word_color_gb">@android:color/white</color> - <color name="highlight_translucent_color_gb">#99FCAE00</color> - <color name="key_text_color_gb">@android:color/white</color> - <color name="key_text_shadow_color_gb">#BB000000</color> - <color name="key_text_inactivated_color_gb">#66E0E4E5</color> - <color name="key_hint_letter_color_gb">#80000000</color> - <color name="key_hint_label_color_gb">#E0E0E4E5</color> - <color name="key_shifted_letter_hint_inactivated_color_gb">#66E0E4E5</color> - <color name="key_shifted_letter_hint_activated_color_gb">#CCE0E4E5</color> - <color name="spacebar_text_color_gb">#FFC0C0C0</color> - <color name="spacebar_text_shadow_color_gb">#80000000</color> - <color name="gesture_floating_preview_color_gb">#C0000000</color> <!-- Color resources for IceCreamSandwich theme. Base color = 33B5E5 --> <!-- android:color/holo_blue_light value is #FF33B5E5 --> <color name="highlight_color_ics">#FF33B5E5</color> diff --git a/java/res/values/config-common.xml b/java/res/values/config-common.xml index 20d5860e3..3fe4b947c 100644 --- a/java/res/values/config-common.xml +++ b/java/res/values/config-common.xml @@ -24,8 +24,8 @@ at input history to suggest a hopefully helpful suggestions for the next word? --> <bool name="config_default_next_word_prediction">true</bool> - <!-- This configuration is an index of {@link KeyboardSwitcher#KEYBOARD_THEMES[]}. --> - <string name="config_default_keyboard_theme_index" translatable="false">2</string> + <!-- This configuration must be aligned with {@link KeyboardTheme#DEFAULT_THEME_ID}. --> + <string name="config_default_keyboard_theme_id" translatable="false">2</string> <integer name="config_delay_update_shift_state">100</integer> <integer name="config_double_space_period_timeout">1100</integer> diff --git a/java/res/values/config.xml b/java/res/values/config.xml index e64b4b192..45ea48392 100644 --- a/java/res/values/config.xml +++ b/java/res/values/config.xml @@ -36,14 +36,6 @@ <dimen name="config_more_keys_keyboard_slide_allowance">63.36dp</dimen> <dimen name="config_more_keys_keyboard_key_horizontal_padding">8dp</dimen> - <fraction name="config_keyboard_top_padding_gb">1.556%p</fraction> - <fraction name="config_keyboard_bottom_padding_gb">4.669%p</fraction> - <fraction name="config_key_vertical_gap_gb">6.495%p</fraction> - <fraction name="config_key_horizontal_gap_gb">1.971%p</fraction> - <!-- config_more_keys_keyboard_key_height x -1.0 --> - <dimen name="config_more_keys_keyboard_vertical_correction_gb">-52.8dp</dimen> - <dimen name="config_key_preview_offset_gb">-8.0dp</dimen> - <fraction name="config_keyboard_top_padding_holo">2.335%p</fraction> <fraction name="config_keyboard_bottom_padding_holo">4.669%p</fraction> <fraction name="config_key_vertical_gap_holo">6.127%p</fraction> diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml index 4be5863f2..9a610a0d0 100644 --- a/java/res/values/donottranslate.xml +++ b/java/res/values/donottranslate.xml @@ -47,31 +47,13 @@ <string name="prefs_debug_mode">Debug Mode</string> <string name="prefs_force_non_distinct_multitouch">Force non-distinct multitouch</string> - <!-- Keyboard theme names --> - <string name="layout_gingerbread">Gingerbread</string> - <string name="layout_ics">IceCreamSandwich</string> - <string name="layout_klp">KeyLimePie</string> - - <!-- For keyboard theme switcher dialog --> - <string-array name="keyboard_layout_modes"> - <item>@string/layout_ics</item> - <item>@string/layout_gingerbread</item> - <item>@string/layout_klp</item> - </string-array> - <!-- An element must be an index of {@link KeyboardSwitcher#KEYBOARD_THEMES[]}. --> - <string-array name="keyboard_layout_modes_values"> - <item>0</item> - <item>1</item> - <item>2</item> - </string-array> - <!-- For keyboard color scheme option dialog. --> - <string-array name="keyboard_color_schemes"> + <string-array name="keyboard_theme_names"> <item>@string/keyboard_color_scheme_white</item> <item>@string/keyboard_color_scheme_blue</item> </string-array> - <!-- An element must be an index of {@link KeyboardSwitcher#KEYBOARD_THEMES[]}. --> - <string-array name="keyboard_color_schemes_values"> + <!-- An element must be a keyboard theme id of {@link KeyboardTheme#THEME_ID_*}. --> + <string-array name="keyboard_theme_ids"> <item>2</item> <item>0</item> </string-array> diff --git a/java/res/values/themes-gb.xml b/java/res/values/themes-gb.xml deleted file mode 100644 index c189da383..000000000 --- a/java/res/values/themes-gb.xml +++ /dev/null @@ -1,150 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 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. -*/ ---> - -<resources> - <style name="KeyboardTheme.GB" parent="KeyboardIcons.GB"> - <item name="keyboardStyle">@style/Keyboard.GB</item> - <item name="keyboardViewStyle">@style/KeyboardView.GB</item> - <item name="mainKeyboardViewStyle">@style/MainKeyboardView.GB</item> - <item name="keyPreviewTextViewStyle">@style/KeyPreviewTextView.GB</item> - <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.GB</item> - <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.GB</item> - <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.GB</item> - <item name="suggestionStripViewStyle">@style/SuggestionStripView.GB</item> - <item name="suggestionWordStyle">@style/SuggestionWord.GB</item> - </style> - <style name="KeyboardIcons.GB"> - <!-- Keyboard icons --> - <item name="iconShiftKey">@drawable/sym_keyboard_shift_holo_dark</item> - <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo_dark</item> - <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo_dark</item> - <item name="iconSpaceKey">@drawable/sym_keyboard_space_holo_dark</item> - <item name="iconEnterKey">@drawable/sym_keyboard_return_holo_dark</item> - <item name="iconSearchKey">@drawable/sym_keyboard_search_holo_dark</item> - <item name="iconTabKey">@drawable/sym_keyboard_tab_holo_dark</item> - <item name="iconShortcutKey">@drawable/sym_keyboard_mic_holo_dark</item> - <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space</item> - <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_holo_dark</item> - <!-- TODO: Needs non-holo disabled shortcut icon drawable --> - <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo_dark</item> - <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item> - <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch_dark</item> - <!-- TODO: Needs dedicated black theme ZWNJ and ZWJ icons --> - <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_holo_dark</item> - </style> - <style - name="Keyboard.GB" - parent="Keyboard" - > - <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] --> - <item name="themeId">1</item> - <item name="touchPositionCorrectionData">@array/touch_position_correction_data_gb</item> - <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_gb</item> - <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_gb</item> - <item name="horizontalGap">@fraction/config_key_horizontal_gap_gb</item> - <item name="verticalGap">@fraction/config_key_vertical_gap_gb</item> - </style> - <style - name="KeyboardView.GB" - parent="KeyboardView" - > - <item name="android:background">@drawable/keyboard_background_gb</item> - <item name="keyBackground">@drawable/btn_keyboard_key_gb</item> - <item name="keyTypeface">bold</item> - <item name="keyTextColor">@color/key_text_color_gb</item> - <item name="keyTextInactivatedColor">@color/key_text_inactivated_color_gb</item> - <item name="keyHintLetterColor">@color/key_hint_letter_color_gb</item> - <item name="keyHintLabelColor">@color/key_hint_label_color_gb</item> - <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_gb</item> - <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_gb</item> - <item name="keyPreviewTextColor">@color/key_text_color_gb</item> - <item name="keyTextShadowColor">@color/key_text_shadow_color_gb</item> - <item name="keyTextShadowRadius">2.75</item> - </style> - <style - name="MainKeyboardView.GB" - parent="KeyboardView.GB" - > - <item name="keyPreviewOffset">@dimen/config_key_preview_offset_gb</item> - <item name="gestureFloatingPreviewTextColor">@color/highlight_color_gb</item> - <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_gb</item> - <item name="gestureTrailColor">@color/highlight_color_gb</item> - <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_gb</item> - <item name="autoCorrectionSpacebarLedEnabled">true</item> - <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_gb</item> - <item name="languageOnSpacebarTextColor">@color/spacebar_text_color_gb</item> - <item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_gb</item> - <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_gb</item> - </style> - <style - name="KeyPreviewTextView.GB" - parent="KeyPreviewTextView" - > - <item name="android:background">@drawable/keyboard_key_feedback_gb</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.GB" - parent="KeyboardView.GB" - > - <item name="keyBackground">@drawable/btn_keyboard_key_functional_gb</item> - <item name="emojiTabLabelColor">@color/emoji_tab_label_color_gb</item> - </style> - <style - name="MoreKeysKeyboard.GB" - parent="Keyboard.GB" - > - <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.GB" - parent="KeyboardView.GB" - > - <item name="android:background">@drawable/keyboard_popup_panel_background_gb</item> - <item name="keyBackground">@drawable/btn_keyboard_key_popup_gb</item> - <item name="keyTypeface">normal</item> - <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_gb</item> - </style> - <style - name="SuggestionStripView.GB" - parent="SuggestionStripView" - > - <item name="android:background">@drawable/keyboard_suggest_strip_gb</item> - <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item> - <item name="colorValidTypedWord">@color/highlight_color_gb</item> - <item name="colorTypedWord">@color/typed_word_color_gb</item> - <item name="colorAutoCorrect">@color/highlight_color_gb</item> - <item name="colorSuggested">@color/highlight_color_gb</item> - <item name="alphaObsoleted">50%</item> - </style> - <style - name="SuggestionWord.GB" - parent="SuggestionWord" - > - <item name="android:background">@drawable/btn_suggestion_gb</item> - <item name="android:textColor">@color/highlight_color_gb</item> - </style> -</resources> diff --git a/java/res/values/touch-position-correction.xml b/java/res/values/touch-position-correction.xml index becec0e0a..e090d106b 100644 --- a/java/res/values/touch-position-correction.xml +++ b/java/res/values/touch-position-correction.xml @@ -37,26 +37,6 @@ </string-array> <string-array - name="touch_position_correction_data_gb" - translatable="false" - > - <!-- First row --> - <item>0.0091285</item> - <item>0.1193203</item> - <item>0.1622607</item> - - <!-- Second row --> - <item>-0.0233128</item> - <item>0.1379798</item> - <item>0.1585229</item> - - <!-- Third row --> - <item>-0.0080185</item> - <item>0.1911477</item> - <item>0.1570948</item> - </string-array> - - <string-array name="touch_position_correction_data_holo" translatable="false" > diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml index a39ce4ae8..3e3bedf15 100644 --- a/java/res/xml/prefs.xml +++ b/java/res/xml/prefs.xml @@ -168,9 +168,9 @@ android:key="pref_keyboard_layout_20110916" android:title="@string/keyboard_color_scheme" android:persistent="true" - android:entryValues="@array/keyboard_color_schemes_values" - android:entries="@array/keyboard_color_schemes" - android:defaultValue="@string/config_default_keyboard_theme_index" /> + android:entryValues="@array/keyboard_theme_ids" + android:entries="@array/keyboard_theme_names" + android:defaultValue="@string/config_default_keyboard_theme_id" /> <PreferenceScreen android:fragment="com.android.inputmethod.latin.settings.AdditionalSubtypeSettings" android:key="custom_input_styles" diff --git a/java/res/xml/prefs_for_debug.xml b/java/res/xml/prefs_for_debug.xml index 7b2b8eab4..bb6a64118 100644 --- a/java/res/xml/prefs_for_debug.xml +++ b/java/res/xml/prefs_for_debug.xml @@ -26,14 +26,6 @@ android:summary="@string/prefs_description_log" android:persistent="true" android:defaultValue="false" /> - <ListPreference - android:key="pref_keyboard_layout_20110916" - android:title="@string/keyboard_layout" - android:summary="%s" - android:persistent="true" - android:entryValues="@array/keyboard_layout_modes_values" - android:entries="@array/keyboard_layout_modes" - android:defaultValue="@string/config_default_keyboard_theme_index" /> <CheckBoxPreference android:key="debug_mode" android:title="@string/prefs_debug_mode" diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java index 949f03794..6131a9b17 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java @@ -38,35 +38,12 @@ import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.RichInputMethodManager; import com.android.inputmethod.latin.SubtypeSwitcher; import com.android.inputmethod.latin.WordComposer; -import com.android.inputmethod.latin.settings.Settings; import com.android.inputmethod.latin.settings.SettingsValues; import com.android.inputmethod.latin.utils.ResourceUtils; public final class KeyboardSwitcher implements KeyboardState.SwitchActions { private static final String TAG = KeyboardSwitcher.class.getSimpleName(); - public static final class KeyboardTheme { - public final int mThemeId; - public final int mStyleId; - - // Note: The themeId should be aligned with "themeId" attribute of Keyboard style - // in values/style.xml. - public KeyboardTheme(final int themeId, final int styleId) { - mThemeId = themeId; - mStyleId = styleId; - } - } - - public static final int THEME_INDEX_ICS = 0; - public static final int THEME_INDEX_GB = 1; - public static final int THEME_INDEX_KLP = 2; - public static final int DEFAULT_THEME_INDEX = THEME_INDEX_KLP; - public static final KeyboardTheme[] KEYBOARD_THEMES = { - new KeyboardTheme(THEME_INDEX_ICS, R.style.KeyboardTheme_ICS), - new KeyboardTheme(THEME_INDEX_GB, R.style.KeyboardTheme_GB), - new KeyboardTheme(THEME_INDEX_KLP, R.style.KeyboardTheme_KLP), - }; - private SubtypeSwitcher mSubtypeSwitcher; private SharedPreferences mPrefs; @@ -88,7 +65,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { * what user actually typed. */ private boolean mIsAutoCorrectionActive; - private KeyboardTheme mKeyboardTheme = KEYBOARD_THEMES[DEFAULT_THEME_INDEX]; + private KeyboardTheme mKeyboardTheme = KeyboardTheme.getDefaultKeyboardTheme(); private Context mThemeContext; private static final KeyboardSwitcher sInstance = new KeyboardSwitcher(); @@ -117,25 +94,12 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { public void updateKeyboardTheme() { final boolean themeUpdated = updateKeyboardThemeAndContextThemeWrapper( - mLatinIME, getKeyboardTheme(mLatinIME, mPrefs)); + mLatinIME, KeyboardTheme.getKeyboardTheme(mPrefs)); if (themeUpdated && mKeyboardView != null) { mLatinIME.setInputView(onCreateInputView(mIsHardwareAcceleratedDrawingEnabled)); } } - private static KeyboardTheme getKeyboardTheme(final Context context, - final SharedPreferences prefs) { - final Resources res = context.getResources(); - final int index = Settings.readKeyboardThemeIndex(prefs, res); - if (index >= 0 && index < KEYBOARD_THEMES.length) { - return KEYBOARD_THEMES[index]; - } - final int defaultThemeIndex = Settings.resetAndGetDefaultKeyboardThemeIndex(prefs, res); - Log.w(TAG, "Illegal keyboard theme in preference: " + index + ", default to " - + defaultThemeIndex); - return KEYBOARD_THEMES[defaultThemeIndex]; - } - private boolean updateKeyboardThemeAndContextThemeWrapper(final Context context, final KeyboardTheme keyboardTheme) { if (mThemeContext == null || mKeyboardTheme.mThemeId != keyboardTheme.mThemeId) { diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java new file mode 100644 index 000000000..4db72ad4d --- /dev/null +++ b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java @@ -0,0 +1,81 @@ +/* + * 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. + */ + +package com.android.inputmethod.keyboard; + +import android.content.SharedPreferences; +import android.util.Log; + +import com.android.inputmethod.latin.R; +import com.android.inputmethod.latin.settings.Settings; + +public final class KeyboardTheme { + private static final String TAG = KeyboardTheme.class.getSimpleName(); + + public static final int THEME_ID_ICS = 0; + public static final int THEME_ID_KLP = 2; + private static final int DEFAULT_THEME_ID = THEME_ID_KLP; + + private static final KeyboardTheme[] KEYBOARD_THEMES = { + new KeyboardTheme(THEME_ID_ICS, R.style.KeyboardTheme_ICS), + new KeyboardTheme(THEME_ID_KLP, R.style.KeyboardTheme_KLP), + }; + + public final int mThemeId; + public final int mStyleId; + + // Note: The themeId should be aligned with "themeId" attribute of Keyboard style + // in values/style.xml. + public KeyboardTheme(final int themeId, final int styleId) { + mThemeId = themeId; + mStyleId = styleId; + } + + private static KeyboardTheme searchKeyboardTheme(final int themeId) { + // TODO: This search algorithm isn't optimal if there are many themes. + for (final KeyboardTheme theme : KEYBOARD_THEMES) { + if (theme.mThemeId == themeId) { + return theme; + } + } + return null; + } + + public static KeyboardTheme getDefaultKeyboardTheme() { + return searchKeyboardTheme(DEFAULT_THEME_ID); + } + + public static KeyboardTheme getKeyboardTheme(final SharedPreferences prefs) { + final String themeIdString = prefs.getString(Settings.PREF_KEYBOARD_LAYOUT, null); + if (themeIdString == null) { + return getDefaultKeyboardTheme(); + } + try { + final int themeId = Integer.parseInt(themeIdString); + final KeyboardTheme theme = searchKeyboardTheme(themeId); + if (theme != null) { + return theme; + } + Log.w(TAG, "Unknown keyboard theme in preference: " + themeIdString); + } catch (final NumberFormatException e) { + Log.w(TAG, "Illegal keyboard theme in preference: " + themeIdString); + } + // Reset preference to default value. + final String defaultThemeIdString = Integer.toString(DEFAULT_THEME_ID); + prefs.edit().putString(Settings.PREF_KEYBOARD_LAYOUT, defaultThemeIdString).apply(); + return getDefaultKeyboardTheme(); + } +} diff --git a/java/src/com/android/inputmethod/latin/settings/Settings.java b/java/src/com/android/inputmethod/latin/settings/Settings.java index 1ba92adb1..353b7463d 100644 --- a/java/src/com/android/inputmethod/latin/settings/Settings.java +++ b/java/src/com/android/inputmethod/latin/settings/Settings.java @@ -23,7 +23,6 @@ import android.content.res.Resources; import android.preference.PreferenceManager; import android.util.Log; -import com.android.inputmethod.keyboard.KeyboardSwitcher; import com.android.inputmethod.latin.AudioAndHapticFeedbackManager; import com.android.inputmethod.latin.InputAttributes; import com.android.inputmethod.latin.R; @@ -270,42 +269,6 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang return prefs.getBoolean(PREF_SHOW_LANGUAGE_SWITCH_KEY, true); } - public static int readKeyboardThemeIndex(final SharedPreferences prefs, final Resources res) { - final int defaultThemeIndex = readDefaultKeyboardThemeIndex(res); - final String themeIndexString = prefs.getString(PREF_KEYBOARD_LAYOUT, null); - if (themeIndexString == null) { - return defaultThemeIndex; - } - try { - return Integer.parseInt(themeIndexString); - } catch (final NumberFormatException e) { - // Format error, returns default keyboard theme index. - Log.e(TAG, "Illegal keyboard theme in preference: " + themeIndexString + ", default to " - + defaultThemeIndex, e); - } - return defaultThemeIndex; - } - - private static int readDefaultKeyboardThemeIndex(final Resources res) { - final String defaultThemeIndexString = res.getString( - R.string.config_default_keyboard_theme_index); - try { - return Integer.parseInt(defaultThemeIndexString); - } catch (final NumberFormatException e) { - final int defaultThemeIndex = KeyboardSwitcher.DEFAULT_THEME_INDEX; - Log.e(TAG, "Corrupted default keyoard theme in resource: " + defaultThemeIndexString - + ", default to " + defaultThemeIndex, e); - return defaultThemeIndex; - } - } - - public static int resetAndGetDefaultKeyboardThemeIndex(final SharedPreferences prefs, - final Resources res) { - final int defaultThemeIndex = readDefaultKeyboardThemeIndex(res); - prefs.edit().putString(PREF_KEYBOARD_LAYOUT, Integer.toString(defaultThemeIndex)).apply(); - return defaultThemeIndex; - } - public static String readPrefAdditionalSubtypes(final SharedPreferences prefs, final Resources res) { final String predefinedPrefSubtypes = AdditionalSubtypeUtils.createPrefSubtypes( diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp index a10234423..0cb66146f 100644 --- a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp @@ -19,16 +19,19 @@ #include "com_android_inputmethod_latin_BinaryDictionary.h" #include <cstring> // for memset() +#include <vector> #include "defines.h" #include "jni.h" #include "jni_common.h" #include "suggest/core/dictionary/dictionary.h" +#include "suggest/core/dictionary/property/unigram_property.h" #include "suggest/core/dictionary/property/word_property.h" #include "suggest/core/result/suggestion_results.h" #include "suggest/core/suggest_options.h" #include "suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.h" #include "utils/char_utils.h" +#include "utils/jni_data_utils.h" #include "utils/time_keeper.h" namespace latinime { @@ -288,22 +291,24 @@ static void latinime_BinaryDictionary_getWordProperty(JNIEnv *env, jclass clazz, } static void latinime_BinaryDictionary_addUnigramWord(JNIEnv *env, jclass clazz, jlong dict, - jintArray word, jint probability, jintArray shortcutTarget, jint shortuctProbability, + jintArray word, jint probability, jintArray shortcutTarget, jint shortcutProbability, jboolean isNotAWord, jboolean isBlacklisted, jint timestamp) { Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict); if (!dictionary) { return; } - jsize wordLength = env->GetArrayLength(word); - int codePoints[wordLength]; - env->GetIntArrayRegion(word, 0, wordLength, codePoints); - jsize shortcutLength = shortcutTarget ? env->GetArrayLength(shortcutTarget) : 0; - int shortcutTargetCodePoints[shortcutLength]; - if (shortcutTarget) { - env->GetIntArrayRegion(shortcutTarget, 0, shortcutLength, shortcutTargetCodePoints); + jsize codePointCount = env->GetArrayLength(word); + int codePoints[codePointCount]; + env->GetIntArrayRegion(word, 0, codePointCount, codePoints); + std::vector<UnigramProperty::ShortcutProperty> shortcuts; + std::vector<int> shortcutTargetCodePoints; + JniDataUtils::jintarrayToVector(env, shortcutTarget, &shortcutTargetCodePoints); + if (!shortcutTargetCodePoints.empty()) { + shortcuts.emplace_back(&shortcutTargetCodePoints, shortcutProbability); } - dictionary->addUnigramWord(codePoints, wordLength, probability, shortcutTargetCodePoints, - shortcutLength, shortuctProbability, isNotAWord, isBlacklisted, timestamp); + const UnigramProperty unigramProperty(isNotAWord, isBlacklisted, + probability, timestamp, 0 /* level */, 0 /* count */, &shortcuts); + dictionary->addUnigramWord(codePoints, codePointCount, &unigramProperty); } static void latinime_BinaryDictionary_addBigramWords(JNIEnv *env, jclass clazz, jlong dict, @@ -394,15 +399,17 @@ static int latinime_BinaryDictionary_addMultipleDictionaryEntries(JNIEnv *env, j jboolean isBlacklisted = env->GetBooleanField(languageModelParam, isBlacklistedFieldId); jintArray shortcutTarget = static_cast<jintArray>( env->GetObjectField(languageModelParam, shortcutTargetFieldId)); - jsize shortcutLength = shortcutTarget ? env->GetArrayLength(shortcutTarget) : 0; - int shortcutTargetCodePoints[shortcutLength]; - if (shortcutTarget) { - env->GetIntArrayRegion(shortcutTarget, 0, shortcutLength, shortcutTargetCodePoints); + std::vector<UnigramProperty::ShortcutProperty> shortcuts; + std::vector<int> shortcutTargetCodePoints; + JniDataUtils::jintarrayToVector(env, shortcutTarget, &shortcutTargetCodePoints); + if (!shortcutTargetCodePoints.empty()) { + jint shortcutProbability = + env->GetIntField(languageModelParam, shortcutProbabilityFieldId); + shortcuts.emplace_back(&shortcutTargetCodePoints, shortcutProbability); } - jint shortcutProbability = env->GetIntField(languageModelParam, shortcutProbabilityFieldId); - dictionary->addUnigramWord(word1CodePoints, word1Length, unigramProbability, - shortcutTargetCodePoints, shortcutLength, shortcutProbability, - isNotAWord, isBlacklisted, timestamp); + const UnigramProperty unigramProperty(isNotAWord, isBlacklisted, + unigramProbability, timestamp, 0 /* level */, 0 /* count */, &shortcuts); + dictionary->addUnigramWord(word1CodePoints, word1Length, &unigramProperty); if (word0) { jint bigramProbability = env->GetIntField(languageModelParam, bigramProbabilityFieldId); dictionary->addBigramWords(word0CodePoints, word0Length, word1CodePoints, word1Length, diff --git a/native/jni/src/suggest/core/dictionary/dictionary.cpp b/native/jni/src/suggest/core/dictionary/dictionary.cpp index 8445da310..e288413a3 100644 --- a/native/jni/src/suggest/core/dictionary/dictionary.cpp +++ b/native/jni/src/suggest/core/dictionary/dictionary.cpp @@ -50,15 +50,10 @@ void Dictionary::getSuggestions(ProximityInfo *proximityInfo, DicTraverseSession TimeKeeper::setCurrentTime(); DicTraverseSession::initSessionInstance( traverseSession, this, prevWordCodePoints, prevWordLength, suggestOptions); - if (suggestOptions->isGesture()) { - mGestureSuggest->getSuggestions(proximityInfo, traverseSession, xcoordinates, - ycoordinates, times, pointerIds, inputCodePoints, inputSize, - languageWeight, outSuggestionResults); - } else { - mTypingSuggest->getSuggestions(proximityInfo, traverseSession, xcoordinates, - ycoordinates, times, pointerIds, inputCodePoints, inputSize, - languageWeight, outSuggestionResults); - } + const auto &suggest = suggestOptions->isGesture() ? mGestureSuggest : mTypingSuggest; + suggest->getSuggestions(proximityInfo, traverseSession, xcoordinates, + ycoordinates, times, pointerIds, inputCodePoints, inputSize, + languageWeight, outSuggestionResults); if (DEBUG_DICT) { outSuggestionResults->dumpSuggestions(); } @@ -87,14 +82,10 @@ int Dictionary::getBigramProbability(const int *word0, int length0, const int *w return mBigramDictionary.getBigramProbability(word0, length0, word1, length1); } -void Dictionary::addUnigramWord(const int *const word, const int length, const int probability, - const int *const shortcutTargetCodePoints, const int shortcutLength, - const int shortcutProbability, const bool isNotAWord, const bool isBlacklisted, - const int timestamp) { +void Dictionary::addUnigramWord(const int *const word, const int length, + const UnigramProperty *const unigramProperty) { TimeKeeper::setCurrentTime(); - mDictionaryStructureWithBufferPolicy->addUnigramWord(word, length, probability, - shortcutTargetCodePoints, shortcutLength, shortcutProbability, isNotAWord, - isBlacklisted, timestamp); + mDictionaryStructureWithBufferPolicy->addUnigramWord(word, length, unigramProperty); } void Dictionary::addBigramWords(const int *const word0, const int length0, const int *const word1, diff --git a/native/jni/src/suggest/core/dictionary/dictionary.h b/native/jni/src/suggest/core/dictionary/dictionary.h index 6b7756565..b6149b338 100644 --- a/native/jni/src/suggest/core/dictionary/dictionary.h +++ b/native/jni/src/suggest/core/dictionary/dictionary.h @@ -34,7 +34,6 @@ class DicTraverseSession; class ProximityInfo; class SuggestionResults; class SuggestOptions; -class WordProperty; class Dictionary { public: @@ -74,10 +73,8 @@ class Dictionary { int getBigramProbability(const int *word0, int length0, const int *word1, int length1) const; - void addUnigramWord(const int *const word, const int length, const int probability, - const int *const shortcutTargetCodePoints, const int shortcutLength, - const int shortcutProbability, const bool isNotAWord, const bool isBlacklisted, - const int timestamp); + void addUnigramWord(const int *const codePoints, const int codePointCount, + const UnigramProperty *const unigramProperty); void addBigramWords(const int *const word0, const int length0, const int *const word1, const int length1, const int probability, const int timestamp); diff --git a/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h b/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h index ae2e7a8fe..807f9b8dd 100644 --- a/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h +++ b/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h @@ -29,6 +29,7 @@ class DicNodeVector; class DictionaryBigramsStructurePolicy; class DictionaryHeaderStructurePolicy; class DictionaryShortcutsStructurePolicy; +class UnigramProperty; /* * This class abstracts the structure of dictionaries. @@ -69,9 +70,7 @@ class DictionaryStructureWithBufferPolicy { // Returns whether the update was success or not. virtual bool addUnigramWord(const int *const word, const int length, - const int probability, const int *const shortcutTargetCodePoints, - const int shortcutLength, const int shortcutProbability, const bool isNotAWord, - const bool isBlacklisted,const int timestamp) = 0; + const UnigramProperty *const unigramProperty) = 0; // Returns whether the update was success or not. virtual bool addBigramWords(const int *const word0, const int length0, const int *const word1, diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h index 79500b9fa..85f46603e 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h @@ -81,10 +81,8 @@ class PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { return &mShortcutListPolicy; } - bool addUnigramWord(const int *const word, const int length, const int probability, - const int *const shortcutTargetCodePoints, const int shortcutLength, - const int shortcutProbability, const bool isNotAWord, const bool isBlacklisted, - const int timestamp) { + bool addUnigramWord(const int *const word, const int length, + const UnigramProperty *const unigramProperty) { // This method should not be called for non-updatable dictionary. AKLOGI("Warning: addUnigramWord() is called for non-updatable dictionary."); return false; diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp index 6cf8409dc..bbfd22e59 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp @@ -154,9 +154,7 @@ int Ver4PatriciaTriePolicy::getBigramsPositionOfPtNode(const int ptNodePos) cons } bool Ver4PatriciaTriePolicy::addUnigramWord(const int *const word, const int length, - const int probability, const int *const shortcutTargetCodePoints, const int shortcutLength, - const int shortcutProbability, const bool isNotAWord, const bool isBlacklisted, - const int timestamp) { + const UnigramProperty *const unigramProperty) { if (!mBuffers->isUpdatable()) { AKLOGI("Warning: addUnigramWord() is called for non-updatable dictionary."); return false; @@ -170,20 +168,24 @@ bool Ver4PatriciaTriePolicy::addUnigramWord(const int *const word, const int len AKLOGE("The word is too long to insert to the dictionary, length: %d", length); return false; } - if (shortcutLength > MAX_WORD_LENGTH) { - AKLOGE("The shortcutTarget is too long to insert to the dictionary, length: %d", - shortcutLength); - return false; + for (const auto &shortcut : unigramProperty->getShortcuts()) { + if (shortcut.getTargetCodePoints()->size() > MAX_WORD_LENGTH) { + AKLOGE("One of shortcut targets is too long to insert to the dictionary, length: %d", + shortcut.getTargetCodePoints()->size()); + return false; + } } DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader); readingHelper.initWithPtNodeArrayPos(getRootPosition()); bool addedNewUnigram = false; - if (mUpdatingHelper.addUnigramWord(&readingHelper, word, length, probability, isNotAWord, - isBlacklisted, timestamp, &addedNewUnigram)) { + if (mUpdatingHelper.addUnigramWord(&readingHelper, word, length, + unigramProperty->getProbability(), unigramProperty->isNotAWord(), + unigramProperty->isBlacklisted(), unigramProperty->getTimestamp(), + &addedNewUnigram)) { if (addedNewUnigram) { mUnigramCount++; } - if (shortcutLength > 0) { + if (unigramProperty->getShortcuts().size() > 0) { // Add shortcut target. const int wordPos = getTerminalPtNodePositionOfWord(word, length, false /* forceLowerCaseSearch */); @@ -191,11 +193,15 @@ bool Ver4PatriciaTriePolicy::addUnigramWord(const int *const word, const int len AKLOGE("Cannot find terminal PtNode position to add shortcut target."); return false; } - if (!mUpdatingHelper.addShortcutTarget(wordPos, shortcutTargetCodePoints, - shortcutLength, shortcutProbability)) { - AKLOGE("Cannot add new shortcut target. PtNodePos: %d, length: %d, probability: %d", - wordPos, shortcutLength, shortcutProbability); - return false; + for (const auto &shortcut : unigramProperty->getShortcuts()) { + if (!mUpdatingHelper.addShortcutTarget(wordPos, + shortcut.getTargetCodePoints()->data(), + shortcut.getTargetCodePoints()->size(), shortcut.getProbability())) { + AKLOGE("Cannot add new shortcut target. PtNodePos: %d, length: %d, " + "probability: %d", wordPos, shortcut.getTargetCodePoints()->size(), + shortcut.getProbability()); + return false; + } } } return true; diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h index cffb1f64d..8f981def5 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h @@ -90,10 +90,8 @@ class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { return &mShortcutPolicy; } - bool addUnigramWord(const int *const word, const int length, const int probability, - const int *const shortcutTargetCodePoints, const int shortcutLength, - const int shortcutProbability, const bool isNotAWord, const bool isBlacklisted, - const int timestamp); + bool addUnigramWord(const int *const word, const int length, + const UnigramProperty *const unigramProperty); bool addBigramWords(const int *const word0, const int length0, const int *const word1, const int length1, const int probability, const int timestamp); diff --git a/native/jni/src/utils/jni_data_utils.h b/native/jni/src/utils/jni_data_utils.h new file mode 100644 index 000000000..e0bbdfdc3 --- /dev/null +++ b/native/jni/src/utils/jni_data_utils.h @@ -0,0 +1,43 @@ +/* + * 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. + */ + +#ifndef LATINIME_JNI_DATA_UTILS_H +#define LATINIME_JNI_DATA_UTILS_H + +#include <vector> + +#include "defines.h" +#include "jni.h" + +namespace latinime { + +class JniDataUtils { + public: + static void jintarrayToVector(JNIEnv *env, jintArray array, std::vector<int> *const outVector) { + if (!array) { + outVector->clear(); + return; + } + const jsize arrayLength = env->GetArrayLength(array); + outVector->resize(arrayLength); + env->GetIntArrayRegion(array, 0 /* start */, arrayLength, outVector->data()); + } + + private: + DISALLOW_IMPLICIT_CONSTRUCTORS(JniDataUtils); +}; +} // namespace latinime +#endif // LATINIME_JNI_DATA_UTILS_H diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java index a4c69e023..0fb6ff2b4 100644 --- a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java +++ b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java @@ -27,7 +27,6 @@ import android.view.inputmethod.InputMethodSubtype; import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils; import com.android.inputmethod.keyboard.KeyboardLayoutSet.Builder; -import com.android.inputmethod.keyboard.KeyboardSwitcher.KeyboardTheme; import com.android.inputmethod.latin.Constants; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.RichInputMethodManager; @@ -42,7 +41,7 @@ import java.util.Locale; @SmallTest public class KeyboardLayoutSetTestsBase extends AndroidTestCase { private static final KeyboardTheme DEFAULT_KEYBOARD_THEME = - KeyboardSwitcher.KEYBOARD_THEMES[KeyboardSwitcher.DEFAULT_THEME_INDEX]; + KeyboardTheme.getDefaultKeyboardTheme(); // All input method subtypes of LatinIME. private final ArrayList<InputMethodSubtype> mAllSubtypesList = CollectionUtils.newArrayList(); |