aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/res/color/emoji_tab_label_color_gb.xml33
-rw-r--r--java/res/drawable-hdpi/keyboard_background_gb.9.pngbin210 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_popup_panel_background_gb.9.pngbin1204 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/keyboard_suggest_strip_gb.9.pngbin248 -> 0 bytes
-rw-r--r--java/res/drawable-hdpi/sym_keyboard_space_led_gb.9.pngbin557 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_background_gb.9.pngbin196 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_popup_panel_background_gb.9.pngbin1726 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/keyboard_suggest_strip_gb.9.pngbin205 -> 0 bytes
-rw-r--r--java/res/drawable-mdpi/sym_keyboard_space_led_gb.9.pngbin365 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_background_gb.9.pngbin241 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_popup_panel_background_gb.9.pngbin1365 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/keyboard_suggest_strip_gb.9.pngbin289 -> 0 bytes
-rw-r--r--java/res/drawable-xhdpi/sym_keyboard_space_led_gb.9.pngbin617 -> 0 bytes
-rw-r--r--java/res/drawable/btn_keyboard_key_functional_gb.xml22
-rw-r--r--java/res/drawable/btn_keyboard_key_gb.xml48
-rw-r--r--java/res/drawable/btn_keyboard_key_popup_gb.xml21
-rw-r--r--java/res/drawable/btn_keyboard_spacebar_gb.xml21
-rw-r--r--java/res/drawable/btn_suggestion_gb.xml27
-rw-r--r--java/res/drawable/keyboard_key_feedback_gb.xml24
-rw-r--r--java/res/values-land/config.xml8
-rw-r--r--java/res/values-sw600dp-land/config.xml5
-rw-r--r--java/res/values-sw600dp/config.xml8
-rw-r--r--java/res/values-sw600dp/touch-position-correction.xml11
-rw-r--r--java/res/values-sw768dp-land/config.xml5
-rw-r--r--java/res/values-sw768dp/config.xml8
-rw-r--r--java/res/values/colors.xml14
-rw-r--r--java/res/values/config-common.xml4
-rw-r--r--java/res/values/config.xml8
-rw-r--r--java/res/values/donottranslate.xml24
-rw-r--r--java/res/values/themes-gb.xml150
-rw-r--r--java/res/values/touch-position-correction.xml20
-rw-r--r--java/res/xml/prefs.xml6
-rw-r--r--java/res/xml/prefs_for_debug.xml8
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java40
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardTheme.java81
-rw-r--r--java/src/com/android/inputmethod/latin/settings/Settings.java37
-rw-r--r--native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp43
-rw-r--r--native/jni/src/suggest/core/dictionary/dictionary.cpp23
-rw-r--r--native/jni/src/suggest/core/dictionary/dictionary.h7
-rw-r--r--native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h5
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h6
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp36
-rw-r--r--native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h6
-rw-r--r--native/jni/src/utils/jni_data_utils.h43
-rw-r--r--tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java3
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
deleted file mode 100644
index fa3d449f7..000000000
--- a/java/res/drawable-hdpi/keyboard_background_gb.9.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index baff80950..000000000
--- a/java/res/drawable-hdpi/keyboard_popup_panel_background_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_suggest_strip_gb.9.png b/java/res/drawable-hdpi/keyboard_suggest_strip_gb.9.png
deleted file mode 100644
index 7cab5a899..000000000
--- a/java/res/drawable-hdpi/keyboard_suggest_strip_gb.9.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index c76f64b94..000000000
--- a/java/res/drawable-hdpi/sym_keyboard_space_led_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_background_gb.9.png b/java/res/drawable-mdpi/keyboard_background_gb.9.png
deleted file mode 100644
index 4f81704c4..000000000
--- a/java/res/drawable-mdpi/keyboard_background_gb.9.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 0d9ab97f0..000000000
--- a/java/res/drawable-mdpi/keyboard_popup_panel_background_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_suggest_strip_gb.9.png b/java/res/drawable-mdpi/keyboard_suggest_strip_gb.9.png
deleted file mode 100644
index fa6c0feff..000000000
--- a/java/res/drawable-mdpi/keyboard_suggest_strip_gb.9.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 1c1ca2cc7..000000000
--- a/java/res/drawable-mdpi/sym_keyboard_space_led_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_background_gb.9.png b/java/res/drawable-xhdpi/keyboard_background_gb.9.png
deleted file mode 100644
index 27b7a108c..000000000
--- a/java/res/drawable-xhdpi/keyboard_background_gb.9.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 79f7ab00a..000000000
--- a/java/res/drawable-xhdpi/keyboard_popup_panel_background_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_suggest_strip_gb.9.png b/java/res/drawable-xhdpi/keyboard_suggest_strip_gb.9.png
deleted file mode 100644
index 1b568df03..000000000
--- a/java/res/drawable-xhdpi/keyboard_suggest_strip_gb.9.png
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 6525fefab..000000000
--- a/java/res/drawable-xhdpi/sym_keyboard_space_led_gb.9.png
+++ /dev/null
Binary files differ
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();