merge in master-release history after reset to d7bef2bee16b6e529d55b505764a79821fe3c825
diff --git a/java/res/color/emoji_tab_label_color_lxx.xml b/java/res/color/emoji_tab_label_color_lxx_dark.xml
similarity index 78%
rename from java/res/color/emoji_tab_label_color_lxx.xml
rename to java/res/color/emoji_tab_label_color_lxx_dark.xml
index c2710d3..090f83e 100644
--- a/java/res/color/emoji_tab_label_color_lxx.xml
+++ b/java/res/color/emoji_tab_label_color_lxx_dark.xml
@@ -21,13 +21,13 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
- android:color="@color/key_text_color_holo" />
+ android:color="@color/key_text_color_lxx_dark" />
<item
android:state_pressed="true"
- android:color="@color/key_text_color_holo" />
+ android:color="@color/key_text_color_lxx_dark" />
<item
android:state_selected="true"
- android:color="@color/key_text_color_holo" />
+ android:color="@color/key_text_color_lxx_dark" />
<item
- android:color="@color/key_text_inactive_color_lxx" />
+ android:color="@color/key_text_inactive_color_lxx_dark" />
</selector>
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_active_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_active_ics.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_active_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_active_klp.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_active_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png
deleted file mode 100644
index fa2cb85..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png
deleted file mode 100644
index 4309989..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png
deleted file mode 100644
index 2d1acf2..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png
deleted file mode 100644
index 3e25a98..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_dark.9.png
similarity index 100%
copy from java/res/drawable-hdpi/btn_keyboard_key_dark_active_klp.9.png
copy to java/res/drawable-hdpi/btn_keyboard_key_normal_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_light.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_normal_holo_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_normal_off_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_lxx.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_lxx.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_ics.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_normal_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_klp.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_normal_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_lxx.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_lxx.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_ics.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_light.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_light_pressed_ics.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_klp.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_light.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_light_pressed_klp.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_ics.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_klp.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_ics.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_klp.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/tab_selected.9.png b/java/res/drawable-hdpi/emoji_category_tab_selected_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/tab_selected.9.png
rename to java/res/drawable-hdpi/emoji_category_tab_selected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/tab_unselected.9.png b/java/res/drawable-hdpi/emoji_category_tab_unselected_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/tab_unselected.9.png
rename to java/res/drawable-hdpi/emoji_category_tab_unselected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_nature_light_activated.png b/java/res/drawable-hdpi/ic_emoji_nature_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_nature_light_activated.png
rename to java/res/drawable-hdpi/ic_emoji_nature_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_nature_light_normal.png b/java/res/drawable-hdpi/ic_emoji_nature_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_nature_light_normal.png
rename to java/res/drawable-hdpi/ic_emoji_nature_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_objects_light_activated.png b/java/res/drawable-hdpi/ic_emoji_objects_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_objects_light_activated.png
rename to java/res/drawable-hdpi/ic_emoji_objects_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_objects_light_normal.png b/java/res/drawable-hdpi/ic_emoji_objects_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_objects_light_normal.png
rename to java/res/drawable-hdpi/ic_emoji_objects_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_people_light_activated.png b/java/res/drawable-hdpi/ic_emoji_people_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_people_light_activated.png
rename to java/res/drawable-hdpi/ic_emoji_people_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_people_light_normal.png b/java/res/drawable-hdpi/ic_emoji_people_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_people_light_normal.png
rename to java/res/drawable-hdpi/ic_emoji_people_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_places_light_activated.png b/java/res/drawable-hdpi/ic_emoji_places_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_places_light_activated.png
rename to java/res/drawable-hdpi/ic_emoji_places_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_places_light_normal.png b/java/res/drawable-hdpi/ic_emoji_places_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_places_light_normal.png
rename to java/res/drawable-hdpi/ic_emoji_places_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recent_light_activated.png b/java/res/drawable-hdpi/ic_emoji_recent_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_recent_light_activated.png
rename to java/res/drawable-hdpi/ic_emoji_recent_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recent_light_normal.png b/java/res/drawable-hdpi/ic_emoji_recent_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_recent_light_normal.png
rename to java/res/drawable-hdpi/ic_emoji_recent_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_symbols_light_activated.png b/java/res/drawable-hdpi/ic_emoji_symbols_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_symbols_light_activated.png
rename to java/res/drawable-hdpi/ic_emoji_symbols_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_symbols_light_normal.png b/java/res/drawable-hdpi/ic_emoji_symbols_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_symbols_light_normal.png
rename to java/res/drawable-hdpi/ic_emoji_symbols_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx.9.png
deleted file mode 100644
index be39415..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png
new file mode 100644
index 0000000..6a76ce6
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx.9.png
deleted file mode 100644
index 9fa6d00..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
new file mode 100644
index 0000000..752c758
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx.9.png
deleted file mode 100644
index c73269b..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..a24519f
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx.9.png
deleted file mode 100644
index fffd402..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..f3c2f6b
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx.9.png
deleted file mode 100644
index 61c23c1..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
new file mode 100644
index 0000000..0a9e467
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx.9.png
deleted file mode 100644
index 827d743..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..6a58ed3
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/keyboard_popup_panel_background_lxx.9.png
rename to java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_return_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_return_lxx_dark.png
new file mode 100644
index 0000000..f6c3c0d
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_return_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_active_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_active_ics.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_active_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_active_klp.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_active_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png
deleted file mode 100644
index 8e9a349..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png
deleted file mode 100644
index 46e9db0..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png
deleted file mode 100644
index ee60e48..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png
deleted file mode 100644
index 1f8f318..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_dark.9.png
similarity index 100%
copy from java/res/drawable-mdpi/btn_keyboard_key_dark_active_klp.9.png
copy to java/res/drawable-mdpi/btn_keyboard_key_normal_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_light.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_normal_holo_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_normal_off_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_lxx.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_lxx.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_ics.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_normal_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_klp.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_normal_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_lxx.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_lxx.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_ics.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_light.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_light_pressed_ics.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_klp.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_light.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_light_pressed_klp.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_ics.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_klp.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_ics.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_klp.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/tab_selected.9.png b/java/res/drawable-mdpi/emoji_category_tab_selected_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/tab_selected.9.png
rename to java/res/drawable-mdpi/emoji_category_tab_selected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/tab_unselected.9.png b/java/res/drawable-mdpi/emoji_category_tab_unselected_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/tab_unselected.9.png
rename to java/res/drawable-mdpi/emoji_category_tab_unselected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_nature_light_activated.png b/java/res/drawable-mdpi/ic_emoji_nature_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_nature_light_activated.png
rename to java/res/drawable-mdpi/ic_emoji_nature_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_nature_light_normal.png b/java/res/drawable-mdpi/ic_emoji_nature_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_nature_light_normal.png
rename to java/res/drawable-mdpi/ic_emoji_nature_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_objects_light_activated.png b/java/res/drawable-mdpi/ic_emoji_objects_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_objects_light_activated.png
rename to java/res/drawable-mdpi/ic_emoji_objects_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_objects_light_normal.png b/java/res/drawable-mdpi/ic_emoji_objects_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_objects_light_normal.png
rename to java/res/drawable-mdpi/ic_emoji_objects_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_people_light_activated.png b/java/res/drawable-mdpi/ic_emoji_people_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_people_light_activated.png
rename to java/res/drawable-mdpi/ic_emoji_people_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_people_light_normal.png b/java/res/drawable-mdpi/ic_emoji_people_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_people_light_normal.png
rename to java/res/drawable-mdpi/ic_emoji_people_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_places_light_activated.png b/java/res/drawable-mdpi/ic_emoji_places_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_places_light_activated.png
rename to java/res/drawable-mdpi/ic_emoji_places_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_places_light_normal.png b/java/res/drawable-mdpi/ic_emoji_places_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_places_light_normal.png
rename to java/res/drawable-mdpi/ic_emoji_places_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recent_light_activated.png b/java/res/drawable-mdpi/ic_emoji_recent_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_recent_light_activated.png
rename to java/res/drawable-mdpi/ic_emoji_recent_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recent_light_normal.png b/java/res/drawable-mdpi/ic_emoji_recent_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_recent_light_normal.png
rename to java/res/drawable-mdpi/ic_emoji_recent_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_symbols_light_activated.png b/java/res/drawable-mdpi/ic_emoji_symbols_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_symbols_light_activated.png
rename to java/res/drawable-mdpi/ic_emoji_symbols_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_symbols_light_normal.png b/java/res/drawable-mdpi/ic_emoji_symbols_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_symbols_light_normal.png
rename to java/res/drawable-mdpi/ic_emoji_symbols_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx.9.png
deleted file mode 100644
index 625490b..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png
new file mode 100644
index 0000000..0173d09
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx.9.png
deleted file mode 100644
index 427c870..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
new file mode 100644
index 0000000..6d89549
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx.9.png
deleted file mode 100644
index ea75729..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..a459d42
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx.9.png
deleted file mode 100644
index 1911c42..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..5c00e7e
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx.9.png
deleted file mode 100644
index cdef116..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
new file mode 100644
index 0000000..f85dd03
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx.9.png
deleted file mode 100644
index dea5d07..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..83d72a2
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/keyboard_popup_panel_background_lxx.9.png
rename to java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_return_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_return_lxx_dark.png
new file mode 100644
index 0000000..8903e02
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_return_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_active_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_active_ics.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_active_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_active_klp.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_active_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png
deleted file mode 100644
index a2f6ac0..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png
deleted file mode 100644
index 2baf7d9..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png
deleted file mode 100644
index 6812f9e..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png
deleted file mode 100644
index 16416f0..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_dark.9.png
similarity index 100%
copy from java/res/drawable-xhdpi/btn_keyboard_key_dark_active_klp.9.png
copy to java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_light.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_lxx.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_lxx.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_ics.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_klp.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_lxx.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_lxx.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_ics.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_light.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_ics.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_klp.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_light.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_klp.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_ics.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_klp.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_ics.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_klp.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/tab_selected.9.png b/java/res/drawable-xhdpi/emoji_category_tab_selected_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/tab_selected.9.png
rename to java/res/drawable-xhdpi/emoji_category_tab_selected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/tab_unselected.9.png b/java/res/drawable-xhdpi/emoji_category_tab_unselected_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/tab_unselected.9.png
rename to java/res/drawable-xhdpi/emoji_category_tab_unselected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_nature_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_nature_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_nature_light_activated.png
rename to java/res/drawable-xhdpi/ic_emoji_nature_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_nature_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_nature_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_nature_light_normal.png
rename to java/res/drawable-xhdpi/ic_emoji_nature_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_objects_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_objects_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_objects_light_activated.png
rename to java/res/drawable-xhdpi/ic_emoji_objects_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_objects_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_objects_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_objects_light_normal.png
rename to java/res/drawable-xhdpi/ic_emoji_objects_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_people_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_people_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_people_light_activated.png
rename to java/res/drawable-xhdpi/ic_emoji_people_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_people_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_people_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_people_light_normal.png
rename to java/res/drawable-xhdpi/ic_emoji_people_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_places_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_places_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_places_light_activated.png
rename to java/res/drawable-xhdpi/ic_emoji_places_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_places_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_places_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_places_light_normal.png
rename to java/res/drawable-xhdpi/ic_emoji_places_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recent_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_recent_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_recent_light_activated.png
rename to java/res/drawable-xhdpi/ic_emoji_recent_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recent_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_recent_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_recent_light_normal.png
rename to java/res/drawable-xhdpi/ic_emoji_recent_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_symbols_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_symbols_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_symbols_light_activated.png
rename to java/res/drawable-xhdpi/ic_emoji_symbols_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_symbols_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_symbols_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_symbols_light_normal.png
rename to java/res/drawable-xhdpi/ic_emoji_symbols_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx.9.png
deleted file mode 100644
index c211d89..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png
new file mode 100644
index 0000000..fed1da7
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx.9.png
deleted file mode 100644
index 543bc76..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
new file mode 100644
index 0000000..ca90d52
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx.9.png
deleted file mode 100644
index ec42aad..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..ad277d6
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx.9.png
deleted file mode 100644
index 319e9d7..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..3c5f89f
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx.9.png
deleted file mode 100644
index 052032b..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
new file mode 100644
index 0000000..6c49824
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx.9.png
deleted file mode 100644
index c7e9d1c..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..2cd7b02
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx.9.png
rename to java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_return_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_return_lxx_dark.png
new file mode 100644
index 0000000..351f73b
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_return_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_ics.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_active_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_klp.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_active_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_holo.9.png
deleted file mode 100644
index 17f0a7a..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_dark.9.png
similarity index 100%
copy from java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_klp.9.png
copy to java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_light.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_light_normal_holo.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_holo.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_lxx.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_lxx.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_ics.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_klp.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_lxx.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_lxx.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_ics.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_light_pressed_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_light.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_light_pressed_ics.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_klp.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_light_pressed_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_light.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_light_pressed_klp.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_ics.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_klp.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_lxx.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_ics.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_klp.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_lxx.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/tab_selected.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_selected_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/tab_selected.9.png
rename to java/res/drawable-xxhdpi/emoji_category_tab_selected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/tab_unselected.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_unselected_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/tab_unselected.9.png
rename to java/res/drawable-xxhdpi/emoji_category_tab_unselected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_nature_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_nature_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_nature_light_activated.png
rename to java/res/drawable-xxhdpi/ic_emoji_nature_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_nature_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_nature_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_nature_light_normal.png
rename to java/res/drawable-xxhdpi/ic_emoji_nature_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_objects_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_objects_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_objects_light_activated.png
rename to java/res/drawable-xxhdpi/ic_emoji_objects_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_objects_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_objects_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_objects_light_normal.png
rename to java/res/drawable-xxhdpi/ic_emoji_objects_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_people_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_people_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_people_light_activated.png
rename to java/res/drawable-xxhdpi/ic_emoji_people_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_people_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_people_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_people_light_normal.png
rename to java/res/drawable-xxhdpi/ic_emoji_people_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_places_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_places_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_places_light_activated.png
rename to java/res/drawable-xxhdpi/ic_emoji_places_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_places_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_places_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_places_light_normal.png
rename to java/res/drawable-xxhdpi/ic_emoji_places_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recent_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_recent_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_recent_light_activated.png
rename to java/res/drawable-xxhdpi/ic_emoji_recent_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recent_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_recent_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_recent_light_normal.png
rename to java/res/drawable-xxhdpi/ic_emoji_recent_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_symbols_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_symbols_light_activated.png
rename to java/res/drawable-xxhdpi/ic_emoji_symbols_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_symbols_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_symbols_light_normal.png
rename to java/res/drawable-xxhdpi/ic_emoji_symbols_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx.9.png
deleted file mode 100644
index fd2f9e5..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png
new file mode 100644
index 0000000..1f10e92
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx.9.png
deleted file mode 100644
index 3ab7900..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
new file mode 100644
index 0000000..25e362c
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx.9.png
deleted file mode 100644
index 99543a1..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..c6d9f3c
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx.9.png
deleted file mode 100644
index 121411a..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..a197c29
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx.9.png
deleted file mode 100644
index e9e3792..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
new file mode 100644
index 0000000..686f757
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx.9.png
deleted file mode 100644
index 6c1143a..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..41fad2d
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx.9.png b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx.9.png
rename to java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_dark.png
new file mode 100644
index 0000000..08334f0
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable/btn_keyboard_key_functional_ics.xml b/java/res/drawable/btn_keyboard_key_functional_ics.xml
index 847ca72..846bccc 100644
--- a/java/res/drawable/btn_keyboard_key_functional_ics.xml
+++ b/java/res/drawable/btn_keyboard_key_functional_ics.xml
@@ -17,6 +17,6 @@
<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_ics" />
- <item android:drawable="@drawable/btn_keyboard_key_dark_normal_holo" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_ics_dark" />
+ <item android:drawable="@drawable/btn_keyboard_key_normal_holo_dark" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_key_functional_klp.xml b/java/res/drawable/btn_keyboard_key_functional_klp.xml
index 0e17ed2..7b444f7 100644
--- a/java/res/drawable/btn_keyboard_key_functional_klp.xml
+++ b/java/res/drawable/btn_keyboard_key_functional_klp.xml
@@ -17,6 +17,6 @@
<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_klp" />
- <item android:drawable="@drawable/btn_keyboard_key_dark_normal_holo" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_klp_dark" />
+ <item android:drawable="@drawable/btn_keyboard_key_normal_holo_dark" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_key_functional_lxx.xml b/java/res/drawable/btn_keyboard_key_functional_lxx_dark.xml
similarity index 85%
rename from java/res/drawable/btn_keyboard_key_functional_lxx.xml
rename to java/res/drawable/btn_keyboard_key_functional_lxx_dark.xml
index fc6f98d..fd1dbb9 100644
--- a/java/res/drawable/btn_keyboard_key_functional_lxx.xml
+++ b/java/res/drawable/btn_keyboard_key_functional_lxx_dark.xml
@@ -17,6 +17,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Functional keys. -->
<item android:state_pressed="true"
- android:drawable="@color/key_background_pressed_lxx" />
- <item android:drawable="@color/key_background_lxx" />
+ android:drawable="@color/key_background_pressed_lxx_dark" />
+ <item android:drawable="@color/key_background_lxx_dark" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_key_ics.xml b/java/res/drawable/btn_keyboard_key_ics.xml
index af14cd5..0bb098d 100644
--- a/java/res/drawable/btn_keyboard_key_ics.xml
+++ b/java/res/drawable/btn_keyboard_key_ics.xml
@@ -17,19 +17,19 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Action keys. -->
<item android:state_active="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_ics" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_ics_dark" />
<item android:state_active="true"
- android:drawable="@drawable/btn_keyboard_key_dark_active_ics" />
+ android:drawable="@drawable/btn_keyboard_key_active_ics_dark" />
<!-- 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_ics" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_on_ics_dark" />
<item android:state_checkable="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_off_ics" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_off_ics_dark" />
<item android:state_checkable="true" android:state_checked="true"
- android:drawable="@drawable/btn_keyboard_key_dark_normal_on_ics" />
+ android:drawable="@drawable/btn_keyboard_key_normal_on_ics_dark" />
<item android:state_checkable="true"
- android:drawable="@drawable/btn_keyboard_key_dark_normal_off_holo" />
+ android:drawable="@drawable/btn_keyboard_key_normal_off_holo_dark" />
<!-- Empty background keys. -->
<item android:state_empty="true"
@@ -37,6 +37,6 @@
<!-- Normal keys. -->
<item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_light_pressed_ics" />
- <item android:drawable="@drawable/btn_keyboard_key_light_normal_holo" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
+ <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_key_klp.xml b/java/res/drawable/btn_keyboard_key_klp.xml
index 56c295f..2a202a1 100644
--- a/java/res/drawable/btn_keyboard_key_klp.xml
+++ b/java/res/drawable/btn_keyboard_key_klp.xml
@@ -17,19 +17,19 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Action keys. -->
<item android:state_active="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_klp" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_klp_dark" />
<item android:state_active="true"
- android:drawable="@drawable/btn_keyboard_key_dark_active_klp" />
+ android:drawable="@drawable/btn_keyboard_key_active_klp_dark" />
<!-- 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_klp" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_on_klp_dark" />
<item android:state_checkable="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_off_klp" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_off_klp_dark" />
<item android:state_checkable="true" android:state_checked="true"
- android:drawable="@drawable/btn_keyboard_key_dark_normal_on_klp" />
+ android:drawable="@drawable/btn_keyboard_key_normal_on_klp_dark" />
<item android:state_checkable="true"
- android:drawable="@drawable/btn_keyboard_key_dark_normal_off_holo" />
+ android:drawable="@drawable/btn_keyboard_key_normal_off_holo_dark" />
<!-- Empty background keys. -->
<item android:state_empty="true"
@@ -37,6 +37,6 @@
<!-- Normal keys. -->
<item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_light_pressed_klp" />
- <item android:drawable="@drawable/btn_keyboard_key_light_normal_holo" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_klp_light" />
+ <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_key_lxx.xml b/java/res/drawable/btn_keyboard_key_lxx_dark.xml
similarity index 67%
rename from java/res/drawable/btn_keyboard_key_lxx.xml
rename to java/res/drawable/btn_keyboard_key_lxx_dark.xml
index fc19a0b..c56d4b3 100644
--- a/java/res/drawable/btn_keyboard_key_lxx.xml
+++ b/java/res/drawable/btn_keyboard_key_lxx_dark.xml
@@ -17,26 +17,26 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Action keys. -->
<item android:state_active="true" android:state_pressed="true"
- android:drawable="@color/key_background_pressed_lxx" />
+ android:drawable="@color/key_background_pressed_lxx_dark" />
<item android:state_active="true"
- android:drawable="@color/key_background_lxx" />
+ android:drawable="@color/key_background_lxx_dark" />
<!-- 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_lxx" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_on_lxx_dark" />
<item android:state_checkable="true" android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_dark_pressed_off_lxx" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_off_lxx_dark" />
<item android:state_checkable="true" android:state_checked="true"
- android:drawable="@drawable/btn_keyboard_key_dark_normal_on_lxx" />
+ android:drawable="@drawable/btn_keyboard_key_normal_on_lxx_dark" />
<item android:state_checkable="true"
- android:drawable="@drawable/btn_keyboard_key_dark_normal_off_lxx" />
+ android:drawable="@drawable/btn_keyboard_key_normal_off_lxx_dark" />
<!-- Empty background keys. -->
<item android:state_empty="true"
- android:drawable="@color/key_background_lxx" />
+ android:drawable="@color/key_background_lxx_dark" />
<!-- Normal keys. -->
<item android:state_pressed="true"
- android:drawable="@color/key_background_pressed_lxx" />
- <item android:drawable="@color/key_background_lxx" />
+ android:drawable="@color/key_background_pressed_lxx_dark" />
+ <item android:drawable="@color/key_background_lxx_dark" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_key_popup_lxx.xml b/java/res/drawable/btn_keyboard_key_popup_lxx_dark.xml
similarity index 97%
rename from java/res/drawable/btn_keyboard_key_popup_lxx.xml
rename to java/res/drawable/btn_keyboard_key_popup_lxx_dark.xml
index 7daebc8..dee6457 100644
--- a/java/res/drawable/btn_keyboard_key_popup_lxx.xml
+++ b/java/res/drawable/btn_keyboard_key_popup_lxx_dark.xml
@@ -16,6 +16,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_popup_selected_lxx" />
+ android:drawable="@drawable/btn_keyboard_key_popup_selected_lxx_dark" />
<item android:drawable="@android:color/transparent" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_spacebar_ics.xml b/java/res/drawable/btn_keyboard_spacebar_ics.xml
index 4530ea0..229f7a9 100644
--- a/java/res/drawable/btn_keyboard_spacebar_ics.xml
+++ b/java/res/drawable/btn_keyboard_spacebar_ics.xml
@@ -16,6 +16,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_light_pressed_ics" />
- <item android:drawable="@drawable/btn_keyboard_key_light_normal_holo" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
+ <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_spacebar_klp.xml b/java/res/drawable/btn_keyboard_spacebar_klp.xml
index 6b07a39..9882f9a 100644
--- a/java/res/drawable/btn_keyboard_spacebar_klp.xml
+++ b/java/res/drawable/btn_keyboard_spacebar_klp.xml
@@ -16,6 +16,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
- android:drawable="@drawable/btn_keyboard_key_light_pressed_klp" />
- <item android:drawable="@drawable/btn_keyboard_key_light_normal_holo" />
+ android:drawable="@drawable/btn_keyboard_key_pressed_klp_light" />
+ <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
</selector>
diff --git a/java/res/drawable/btn_keyboard_spacebar_lxx.xml b/java/res/drawable/btn_keyboard_spacebar_lxx_dark.xml
similarity index 85%
rename from java/res/drawable/btn_keyboard_spacebar_lxx.xml
rename to java/res/drawable/btn_keyboard_spacebar_lxx_dark.xml
index 10d04a8..5c595d9 100644
--- a/java/res/drawable/btn_keyboard_spacebar_lxx.xml
+++ b/java/res/drawable/btn_keyboard_spacebar_lxx_dark.xml
@@ -16,6 +16,6 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
- android:drawable="@color/key_background_pressed_lxx" />
- <item android:drawable="@color/key_background_lxx" />
+ android:drawable="@color/key_background_pressed_lxx_dark" />
+ <item android:drawable="@color/key_background_lxx_dark" />
</selector>
diff --git a/java/res/drawable/btn_suggestion_lxx.xml b/java/res/drawable/btn_suggestion_lxx_dark.xml
similarity index 97%
rename from java/res/drawable/btn_suggestion_lxx.xml
rename to java/res/drawable/btn_suggestion_lxx_dark.xml
index c73e1f7..84a9120 100644
--- a/java/res/drawable/btn_suggestion_lxx.xml
+++ b/java/res/drawable/btn_suggestion_lxx_dark.xml
@@ -23,5 +23,5 @@
>
<item
android:state_pressed="true"
- android:drawable="@color/suggested_word_background_selected_lxx" />
+ android:drawable="@color/suggested_word_background_selected_lxx_dark" />
</selector>
diff --git a/java/res/drawable/ic_emoji_nature_light.xml b/java/res/drawable/ic_emoji_nature_holo_dark.xml
similarity index 74%
rename from java/res/drawable/ic_emoji_nature_light.xml
rename to java/res/drawable/ic_emoji_nature_holo_dark.xml
index 543409e..b946295 100644
--- a/java/res/drawable/ic_emoji_nature_light.xml
+++ b/java/res/drawable/ic_emoji_nature_holo_dark.xml
@@ -21,13 +21,13 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
- android:drawable="@drawable/ic_emoji_nature_light_activated" />
+ android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
<item
android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_nature_light_activated" />
+ android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
<item
android:state_selected="true"
- android:drawable="@drawable/ic_emoji_nature_light_activated" />
+ android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
<item
- android:drawable="@drawable/ic_emoji_nature_light_normal" />
+ android:drawable="@drawable/ic_emoji_nature_normal_holo_dark" />
</selector>
diff --git a/java/res/drawable/ic_emoji_objects_light.xml b/java/res/drawable/ic_emoji_objects_holo_dark.xml
similarity index 74%
copy from java/res/drawable/ic_emoji_objects_light.xml
copy to java/res/drawable/ic_emoji_objects_holo_dark.xml
index 4096e69..266e81e 100644
--- a/java/res/drawable/ic_emoji_objects_light.xml
+++ b/java/res/drawable/ic_emoji_objects_holo_dark.xml
@@ -21,12 +21,12 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
+ android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
<item
android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
+ android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
<item
android:state_selected="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
- <item android:drawable="@drawable/ic_emoji_objects_light_normal" />
+ android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
+ <item android:drawable="@drawable/ic_emoji_objects_normal_holo_dark" />
</selector>
diff --git a/java/res/drawable/ic_emoji_objects_light.xml b/java/res/drawable/ic_emoji_people_holo_dark.xml
similarity index 74%
copy from java/res/drawable/ic_emoji_objects_light.xml
copy to java/res/drawable/ic_emoji_people_holo_dark.xml
index 4096e69..15955d2 100644
--- a/java/res/drawable/ic_emoji_objects_light.xml
+++ b/java/res/drawable/ic_emoji_people_holo_dark.xml
@@ -21,12 +21,12 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
+ android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
<item
android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
+ android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
<item
android:state_selected="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
- <item android:drawable="@drawable/ic_emoji_objects_light_normal" />
+ android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
+ <item android:drawable="@drawable/ic_emoji_people_normal_holo_dark" />
</selector>
diff --git a/java/res/drawable/ic_emoji_people_light.xml b/java/res/drawable/ic_emoji_people_light.xml
deleted file mode 100644
index ea9e406..0000000
--- a/java/res/drawable/ic_emoji_people_light.xml
+++ /dev/null
@@ -1,32 +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:drawable="@drawable/ic_emoji_people_light_activated" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_people_light_activated" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_people_light_activated" />
- <item android:drawable="@drawable/ic_emoji_people_light_normal" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_objects_light.xml b/java/res/drawable/ic_emoji_places_holo_dark.xml
similarity index 74%
copy from java/res/drawable/ic_emoji_objects_light.xml
copy to java/res/drawable/ic_emoji_places_holo_dark.xml
index 4096e69..260bbd8 100644
--- a/java/res/drawable/ic_emoji_objects_light.xml
+++ b/java/res/drawable/ic_emoji_places_holo_dark.xml
@@ -21,12 +21,12 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
+ android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
<item
android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
+ android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
<item
android:state_selected="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
- <item android:drawable="@drawable/ic_emoji_objects_light_normal" />
+ android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
+ <item android:drawable="@drawable/ic_emoji_places_normal_holo_dark" />
</selector>
diff --git a/java/res/drawable/ic_emoji_places_light.xml b/java/res/drawable/ic_emoji_places_light.xml
deleted file mode 100644
index 312cad9..0000000
--- a/java/res/drawable/ic_emoji_places_light.xml
+++ /dev/null
@@ -1,32 +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:drawable="@drawable/ic_emoji_places_light_activated" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_places_light_activated" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_places_light_activated" />
- <item android:drawable="@drawable/ic_emoji_places_light_normal" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_objects_light.xml b/java/res/drawable/ic_emoji_recent_holo_dark.xml
similarity index 74%
copy from java/res/drawable/ic_emoji_objects_light.xml
copy to java/res/drawable/ic_emoji_recent_holo_dark.xml
index 4096e69..225caeb 100644
--- a/java/res/drawable/ic_emoji_objects_light.xml
+++ b/java/res/drawable/ic_emoji_recent_holo_dark.xml
@@ -21,12 +21,12 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
+ android:drawable="@drawable/ic_emoji_recent_activated_holo_dark" />
<item
android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
+ android:drawable="@drawable/ic_emoji_recent_activated_holo_dark" />
<item
android:state_selected="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
- <item android:drawable="@drawable/ic_emoji_objects_light_normal" />
+ android:drawable="@drawable/ic_emoji_recent_activated_holo_dark" />
+ <item android:drawable="@drawable/ic_emoji_recent_normal_holo_dark" />
</selector>
diff --git a/java/res/drawable/ic_emoji_recent_light.xml b/java/res/drawable/ic_emoji_recent_light.xml
deleted file mode 100644
index 8c2123f..0000000
--- a/java/res/drawable/ic_emoji_recent_light.xml
+++ /dev/null
@@ -1,32 +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:drawable="@drawable/ic_emoji_recent_light_activated" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_recent_light_activated" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_recent_light_activated" />
- <item android:drawable="@drawable/ic_emoji_recent_light_normal" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_objects_light.xml b/java/res/drawable/ic_emoji_symbols_holo_dark.xml
similarity index 74%
rename from java/res/drawable/ic_emoji_objects_light.xml
rename to java/res/drawable/ic_emoji_symbols_holo_dark.xml
index 4096e69..831d659 100644
--- a/java/res/drawable/ic_emoji_objects_light.xml
+++ b/java/res/drawable/ic_emoji_symbols_holo_dark.xml
@@ -21,12 +21,12 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
+ android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
<item
android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
+ android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
<item
android:state_selected="true"
- android:drawable="@drawable/ic_emoji_objects_light_activated" />
- <item android:drawable="@drawable/ic_emoji_objects_light_normal" />
+ android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
+ <item android:drawable="@drawable/ic_emoji_symbols_normal_holo_dark" />
</selector>
diff --git a/java/res/drawable/ic_emoji_symbols_light.xml b/java/res/drawable/ic_emoji_symbols_light.xml
deleted file mode 100644
index 79aaf0f..0000000
--- a/java/res/drawable/ic_emoji_symbols_light.xml
+++ /dev/null
@@ -1,32 +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:drawable="@drawable/ic_emoji_symbols_light_activated" />
- <item
- android:state_pressed="true"
- android:drawable="@drawable/ic_emoji_symbols_light_activated" />
- <item
- android:state_selected="true"
- android:drawable="@drawable/ic_emoji_symbols_light_activated" />
- <item android:drawable="@drawable/ic_emoji_symbols_light_normal" />
-</selector>
diff --git a/java/res/drawable/keyboard_key_feedback_lxx.xml b/java/res/drawable/keyboard_key_feedback_lxx_dark.xml
similarity index 90%
rename from java/res/drawable/keyboard_key_feedback_lxx.xml
rename to java/res/drawable/keyboard_key_feedback_lxx_dark.xml
index 2abbc90..e624a8b 100644
--- a/java/res/drawable/keyboard_key_feedback_lxx.xml
+++ b/java/res/drawable/keyboard_key_feedback_lxx_dark.xml
@@ -20,17 +20,17 @@
>
<!-- Left edge -->
<item latin:state_left_edge="true" latin:state_has_morekeys="true"
- android:drawable="@drawable/keyboard_key_feedback_left_more_background_lxx" />
+ android:drawable="@drawable/keyboard_key_feedback_left_more_background_lxx_dark" />
<item latin:state_left_edge="true"
- android:drawable="@drawable/keyboard_key_feedback_left_background_lxx" />
+ android:drawable="@drawable/keyboard_key_feedback_left_background_lxx_dark" />
<!-- Right edge -->
<item latin:state_right_edge="true" latin:state_has_morekeys="true"
- android:drawable="@drawable/keyboard_key_feedback_right_more_background_lxx" />
+ android:drawable="@drawable/keyboard_key_feedback_right_more_background_lxx_dark" />
<item latin:state_right_edge="true"
- android:drawable="@drawable/keyboard_key_feedback_right_background_lxx" />
+ android:drawable="@drawable/keyboard_key_feedback_right_background_lxx_dark" />
<item latin:state_has_morekeys="true"
- android:drawable="@drawable/keyboard_key_feedback_more_background_lxx" />
- <item android:drawable="@drawable/keyboard_key_feedback_background_lxx" />
+ android:drawable="@drawable/keyboard_key_feedback_more_background_lxx_dark" />
+ <item android:drawable="@drawable/keyboard_key_feedback_background_lxx_dark" />
</selector>
diff --git a/java/res/layout/emoji_palettes_view.xml b/java/res/layout/emoji_palettes_view.xml
index 7618871..c0c346e 100644
--- a/java/res/layout/emoji_palettes_view.xml
+++ b/java/res/layout/emoji_palettes_view.xml
@@ -41,11 +41,11 @@
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@drawable/tab_selected"
+ android:background="@drawable/emoji_category_tab_selected_holo_dark"
android:divider="@null"
android:tabStripEnabled="true"
- android:tabStripLeft="@drawable/tab_unselected"
- android:tabStripRight="@drawable/tab_unselected" />
+ android:tabStripLeft="@drawable/emoji_category_tab_unselected_holo_dark"
+ android:tabStripRight="@drawable/emoji_category_tab_unselected_holo_dark" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dip"
@@ -70,7 +70,6 @@
android:layout_width="0dip"
android:layout_weight="12.5"
android:layout_height="match_parent"
- android:background="@color/emoji_key_background_color"
android:src="@drawable/sym_keyboard_delete_holo_dark"
android:contentDescription="@string/spoken_description_delete" />
</LinearLayout>
@@ -82,7 +81,7 @@
android:id="@+id/emoji_category_page_id_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/emoji_category_page_id_view_background" />
+ android:background="@color/emoji_category_page_id_background_holo" />
<LinearLayout
android:id="@+id/emoji_action_bar"
android:orientation="horizontal"
diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml
index 60b5cdf..12cb71f 100644
--- a/java/res/values/colors.xml
+++ b/java/res/values/colors.xml
@@ -40,27 +40,25 @@
<color name="suggested_word_color_klp">#B2F0F0F0</color>
<color name="highlight_translucent_color_klp">#99E0E0E0</color>
<!-- Color resources for LXX theme. Base color = F0F0F0 -->
- <color name="key_text_inactive_color_lxx">#808184</color>
- <color name="key_hint_letter_color_lxx">#808184</color>
- <color name="highlight_color_lxx">#7FCAC3</color>
- <color name="typed_word_color_lxx">#D87FCAC3</color>
- <color name="suggested_word_color_lxx">#B27FCAC3</color>
- <color name="highlight_translucent_color_lxx">#997FCAC3</color>
- <color name="keyboard_background_lxx">#384248</color>
- <color name="key_background_lxx">#384248</color>
- <color name="key_background_pressed_lxx">#546872</color>
- <color name="suggestions_strip_background_lxx">#263238</color>
- <color name="suggested_word_background_selected_lxx">#384248</color>
+ <color name="key_text_color_lxx_dark">#FFFFFF</color>
+ <color name="key_text_inactive_color_lxx_dark">#808184</color>
+ <color name="key_hint_letter_color_lxx_dark">#808184</color>
+ <color name="highlight_color_lxx_dark">#7FCAC3</color>
+ <color name="typed_word_color_lxx_dark">#D87FCAC3</color>
+ <color name="suggested_word_color_lxx_dark">#B27FCAC3</color>
+ <color name="highlight_translucent_color_lxx_dark">#997FCAC3</color>
+ <color name="keyboard_background_lxx_dark">#384248</color>
+ <color name="key_background_lxx_dark">#384248</color>
+ <color name="key_background_pressed_lxx_dark">#546872</color>
+ <color name="suggestions_strip_background_lxx_dark">#263238</color>
+ <color name="suggested_word_background_selected_lxx_dark">#384248</color>
+ <color name="gesture_floating_preview_color_lxx_dark">#C0000000</color>
<!-- Color resources for setup wizard and tutorial -->
<color name="setup_background">#FFEBEBEB</color>
<color name="setup_text_dark">#FF707070</color>
<color name="setup_text_action">@android:color/holo_blue_light</color>
<color name="setup_step_background">@android:color/background_light</color>
<color name="setup_welcome_video_margin_color">#FFCCCCCC</color>
- <color name="emoji_category_page_id_view_background">#FF000000</color>
- <color name="emoji_category_page_id_view_foreground">#80FFFFFF</color>
-
- <!-- TODO: Color which should be included in the theme -->
- <color name="emoji_key_background_color">#00000000</color>
- <color name="emoji_key_pressed_background_color">#30FFFFFF</color>
+ <color name="emoji_category_page_id_background_holo">#FF000000</color>
+ <color name="emoji_category_page_id_foreground_holo">#80FFFFFF</color>
</resources>
diff --git a/java/res/values/keyboard-icons-lxx.xml b/java/res/values/keyboard-icons-lxx-dark.xml
similarity index 97%
rename from java/res/values/keyboard-icons-lxx.xml
rename to java/res/values/keyboard-icons-lxx-dark.xml
index 56d6604..07af85e 100644
--- a/java/res/values/keyboard-icons-lxx.xml
+++ b/java/res/values/keyboard-icons-lxx-dark.xml
@@ -19,14 +19,14 @@
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <style name="KeyboardIcons.LXX">
+ <style name="KeyboardIcons.LXX_Dark">
<!-- Keyboard icons -->
<!-- TODO: Update those icons for LXX theme. -->
<item name="iconShiftKey">@drawable/sym_keyboard_shift_holo_dark</item>
<item name="iconDeleteKey">@drawable/sym_keyboard_delete_lxx_dark</item>
<item name="iconSettingsKey">@drawable/sym_keyboard_settings_lxx_dark</item>
<item name="iconSpaceKey">@drawable/sym_keyboard_spacebar_lxx_dark</item>
- <item name="iconEnterKey">@drawable/sym_keyboard_return_holo_dark</item>
+ <item name="iconEnterKey">@drawable/sym_keyboard_return_lxx_dark</item>
<item name="iconGoKey">@drawable/sym_keyboard_go_lxx_dark</item>
<item name="iconSearchKey">@drawable/sym_keyboard_search_lxx_dark</item>
<item name="iconSendKey">@drawable/sym_keyboard_send_lxx_dark</item>
diff --git a/java/res/values/themes-lxx.xml b/java/res/values/themes-lxx-dark.xml
similarity index 74%
rename from java/res/values/themes-lxx.xml
rename to java/res/values/themes-lxx-dark.xml
index 8016e76..ace5fe9 100644
--- a/java/res/values/themes-lxx.xml
+++ b/java/res/values/themes-lxx-dark.xml
@@ -19,19 +19,19 @@
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android">
- <style name="KeyboardTheme.LXX" parent="KeyboardIcons.LXX">
- <item name="keyboardStyle">@style/Keyboard.LXX</item>
- <item name="keyboardViewStyle">@style/KeyboardView.LXX</item>
- <item name="mainKeyboardViewStyle">@style/MainKeyboardView.LXX</item>
- <item name="keyPreviewTextViewStyle">@style/KeyPreviewTextView.LXX</item>
- <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.LXX</item>
- <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.LXX</item>
- <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.LXX</item>
- <item name="suggestionStripViewStyle">@style/SuggestionStripView.LXX</item>
- <item name="suggestionWordStyle">@style/SuggestionWord.LXX</item>
+ <style name="KeyboardTheme.LXX_Dark" parent="KeyboardIcons.LXX_Dark">
+ <item name="keyboardStyle">@style/Keyboard.LXX_Dark</item>
+ <item name="keyboardViewStyle">@style/KeyboardView.LXX_Dark</item>
+ <item name="mainKeyboardViewStyle">@style/MainKeyboardView.LXX_Dark</item>
+ <item name="keyPreviewTextViewStyle">@style/KeyPreviewTextView.LXX_Dark</item>
+ <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.LXX_Dark</item>
+ <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.LXX_Dark</item>
+ <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.LXX_Dark</item>
+ <item name="suggestionStripViewStyle">@style/SuggestionStripView.LXX_Dark</item>
+ <item name="suggestionWordStyle">@style/SuggestionWord.LXX_Dark</item>
</style>
<style
- name="Keyboard.LXX"
+ name="Keyboard.LXX_Dark"
parent="Keyboard"
>
<!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
@@ -43,56 +43,56 @@
<item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item>
</style>
<style
- name="KeyboardView.LXX"
+ name="KeyboardView.LXX_Dark"
parent="KeyboardView"
>
- <item name="android:background">@color/keyboard_background_lxx</item>
- <item name="keyBackground">@drawable/btn_keyboard_key_lxx</item>
- <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_lxx</item>
- <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_lxx</item>
+ <item name="android:background">@color/keyboard_background_lxx_dark</item>
+ <item name="keyBackground">@drawable/btn_keyboard_key_lxx_dark</item>
+ <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_lxx_dark</item>
+ <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_lxx_dark</item>
<item name="spacebarIconWidthRatio">0.9</item>
<item name="keyTypeface">normal</item>
- <item name="keyTextColor">@color/key_text_color_holo</item>
- <item name="keyTextInactivatedColor">@color/key_text_inactive_color_lxx</item>
- <item name="functionalTextColor">@color/key_hint_letter_color_lxx</item>
- <item name="keyHintLetterColor">@color/key_hint_letter_color_lxx</item>
- <item name="keyHintLabelColor">@color/key_text_inactive_color_lxx</item>
- <item name="keyShiftedLetterHintInactivatedColor">@color/key_text_inactive_color_lxx</item>
- <item name="keyShiftedLetterHintActivatedColor">@color/key_text_color_holo</item>
- <item name="keyPreviewTextColor">@color/key_text_color_holo</item>
+ <item name="keyTextColor">@color/key_text_color_lxx_dark</item>
+ <item name="keyTextInactivatedColor">@color/key_text_inactive_color_lxx_dark</item>
+ <item name="functionalTextColor">@color/key_hint_letter_color_lxx_dark</item>
+ <item name="keyHintLetterColor">@color/key_hint_letter_color_lxx_dark</item>
+ <item name="keyHintLabelColor">@color/key_text_inactive_color_lxx_dark</item>
+ <item name="keyShiftedLetterHintInactivatedColor">@color/key_text_inactive_color_lxx_dark</item>
+ <item name="keyShiftedLetterHintActivatedColor">@color/key_text_color_lxx_dark</item>
+ <item name="keyPreviewTextColor">@color/key_text_color_lxx_dark</item>
<!-- A negative value to disable key text shadow layer. -->
<item name="keyTextShadowRadius">-1.0</item>
</style>
<style
- name="MainKeyboardView.LXX"
- parent="KeyboardView.LXX"
+ name="MainKeyboardView.LXX_Dark"
+ parent="KeyboardView.LXX_Dark"
>
<item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item>
- <item name="gestureFloatingPreviewTextColor">@color/highlight_color_lxx</item>
- <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_holo</item>
- <item name="gestureTrailColor">@color/highlight_color_lxx</item>
- <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_lxx</item>
- <item name="languageOnSpacebarTextColor">@color/key_text_inactive_color_lxx</item>
+ <item name="gestureFloatingPreviewTextColor">@color/highlight_color_lxx_dark</item>
+ <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_lxx_dark</item>
+ <item name="gestureTrailColor">@color/highlight_color_lxx_dark</item>
+ <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_lxx_dark</item>
+ <item name="languageOnSpacebarTextColor">@color/key_text_inactive_color_lxx_dark</item>
<!-- A negative value to disable text shadow layer. -->
<item name="languageOnSpacebarTextShadowRadius">-1.0</item>
</style>
<style
- name="KeyPreviewTextView.LXX"
+ name="KeyPreviewTextView.LXX_Dark"
parent="KeyPreviewTextView"
>
- <item name="android:background">@drawable/keyboard_key_feedback_lxx</item>
+ <item name="android:background">@drawable/keyboard_key_feedback_lxx_dark</item>
</style>
<!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
for instance delete button, need themed {@link KeyboardView} attributes. -->
<style
- name="EmojiPalettesView.LXX"
- parent="MainKeyboardView.LXX"
+ name="EmojiPalettesView.LXX_Dark"
+ parent="MainKeyboardView.LXX_Dark"
>
- <item name="emojiTabLabelColor">@color/emoji_tab_label_color_lxx</item>
+ <item name="emojiTabLabelColor">@color/emoji_tab_label_color_lxx_dark</item>
</style>
<style
- name="MoreKeysKeyboard.LXX"
- parent="Keyboard.LXX"
+ name="MoreKeysKeyboard.LXX_Dark"
+ parent="Keyboard.LXX_Dark"
>
<item name="keyboardTopPadding">0%p</item>
<item name="keyboardBottomPadding">0%p</item>
@@ -100,35 +100,35 @@
<item name="touchPositionCorrectionData">@null</item>
</style>
<style
- name="MoreKeysKeyboardView.LXX"
- parent="KeyboardView.LXX"
+ name="MoreKeysKeyboardView.LXX_Dark"
+ parent="KeyboardView.LXX_Dark"
>
- <item name="android:background">@drawable/keyboard_popup_panel_background_lxx</item>
- <item name="keyBackground">@drawable/btn_keyboard_key_popup_lxx</item>
+ <item name="android:background">@drawable/keyboard_popup_panel_background_lxx_dark</item>
+ <item name="keyBackground">@drawable/btn_keyboard_key_popup_lxx_dark</item>
<item name="keyTypeface">normal</item>
<item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
</style>
<style
- name="SuggestionStripView.LXX"
- parent="KeyboardView.LXX"
+ name="SuggestionStripView.LXX_Dark"
+ parent="KeyboardView.LXX_Dark"
>
<item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
<item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
<item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
<item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
- <item name="android:background">@color/suggestions_strip_background_lxx</item>
+ <item name="android:background">@color/suggestions_strip_background_lxx_dark</item>
<item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
- <item name="colorValidTypedWord">@color/typed_word_color_lxx</item>
- <item name="colorTypedWord">@color/typed_word_color_lxx</item>
- <item name="colorAutoCorrect">@color/highlight_color_lxx</item>
- <item name="colorSuggested">@color/suggested_word_color_lxx</item>
+ <item name="colorValidTypedWord">@color/typed_word_color_lxx_dark</item>
+ <item name="colorTypedWord">@color/typed_word_color_lxx_dark</item>
+ <item name="colorAutoCorrect">@color/highlight_color_lxx_dark</item>
+ <item name="colorSuggested">@color/suggested_word_color_lxx_dark</item>
<item name="alphaObsoleted">70%</item>
</style>
<style
- name="SuggestionWord.LXX"
+ name="SuggestionWord.LXX_Dark"
parent="SuggestionWord"
>
- <item name="android:background">@drawable/btn_suggestion_lxx</item>
- <item name="android:textColor">@color/highlight_color_lxx</item>
+ <item name="android:background">@drawable/btn_suggestion_lxx_dark</item>
+ <item name="android:textColor">@color/highlight_color_lxx_dark</item>
</style>
</resources>
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
index 0c0c162..1f14aa2 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
@@ -34,7 +34,7 @@
static final int THEME_ID_ICS = 0;
static final int THEME_ID_KLP = 2;
- static final int THEME_ID_LXX = 3;
+ static final int THEME_ID_LXX_DARK = 3;
static final int DEFAULT_THEME_ID = THEME_ID_KLP;
private static final KeyboardTheme[] KEYBOARD_THEMES = {
@@ -42,7 +42,7 @@
VERSION_CODES.BASE),
new KeyboardTheme(THEME_ID_KLP, R.style.KeyboardTheme_KLP,
VERSION_CODES.ICE_CREAM_SANDWICH),
- new KeyboardTheme(THEME_ID_LXX, R.style.KeyboardTheme_LXX,
+ new KeyboardTheme(THEME_ID_LXX_DARK, R.style.KeyboardTheme_LXX_Dark,
// TODO: Update this constant once the *next* version becomes available.
VERSION_CODES.CUR_DEVELOPMENT),
};
@@ -88,7 +88,7 @@
return 5;
case THEME_ID_KLP:
return 9;
- case THEME_ID_LXX:
+ case THEME_ID_LXX_DARK:
return 10;
default: // Invalid theme
return -1;
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
index dd0e3e8..495fa55 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
@@ -70,12 +70,12 @@
"emoticons" };
private static final int[] sCategoryIcon = {
- R.drawable.ic_emoji_recent_light,
- R.drawable.ic_emoji_people_light,
- R.drawable.ic_emoji_objects_light,
- R.drawable.ic_emoji_nature_light,
- R.drawable.ic_emoji_places_light,
- R.drawable.ic_emoji_symbols_light,
+ R.drawable.ic_emoji_recent_holo_dark,
+ R.drawable.ic_emoji_people_holo_dark,
+ R.drawable.ic_emoji_objects_holo_dark,
+ R.drawable.ic_emoji_nature_holo_dark,
+ R.drawable.ic_emoji_places_holo_dark,
+ R.drawable.ic_emoji_symbols_holo_dark,
0 };
private static final String[] sCategoryLabel =
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java
index 74cfd9b..f5aa107 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java
@@ -38,7 +38,7 @@
public EmojiCategoryPageIndicatorView(final Context context, final AttributeSet attrs) {
super(context, attrs);
mPaint.setColor(context.getResources().getColor(
- R.color.emoji_category_page_id_view_foreground));
+ R.color.emoji_category_page_id_foreground_holo));
}
public void setCategoryPageId(final int size, final int id, final float offset) {
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
index 3813c57..8e45957 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
@@ -416,14 +416,11 @@
private static class DeleteKeyOnTouchListener implements OnTouchListener {
static final long MAX_REPEAT_COUNT_TIME = TimeUnit.SECONDS.toMillis(30);
- final int mDeleteKeyPressedBackgroundColor;
final long mKeyRepeatStartTimeout;
final long mKeyRepeatInterval;
public DeleteKeyOnTouchListener(Context context) {
final Resources res = context.getResources();
- mDeleteKeyPressedBackgroundColor =
- res.getColor(R.color.emoji_key_pressed_background_color);
mKeyRepeatStartTimeout = res.getInteger(R.integer.config_key_repeat_start_timeout);
mKeyRepeatInterval = res.getInteger(R.integer.config_key_repeat_interval);
mTimer = new CountDownTimer(MAX_REPEAT_COUNT_TIME, mKeyRepeatInterval) {
@@ -500,7 +497,7 @@
mTimer.cancel();
mRepeatCount = 0;
handleKeyDown();
- v.setBackgroundColor(mDeleteKeyPressedBackgroundColor);
+ v.setPressed(true /* pressed */);
mState = KEY_REPEAT_STATE_KEY_DOWN;
mTimer.start();
}
@@ -510,7 +507,7 @@
if (mState == KEY_REPEAT_STATE_KEY_DOWN) {
handleKeyUp();
}
- v.setBackgroundColor(Color.TRANSPARENT);
+ v.setPressed(false /* pressed */);
mState = KEY_REPEAT_STATE_INITIALIZED;
}
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index 8a6404b..b8cf3f8 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -265,7 +265,7 @@
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
if (!isValidDictionary()) {
@@ -274,8 +274,8 @@
Arrays.fill(mInputCodePoints, Constants.NOT_A_CODE);
// TODO: toLowerCase in the native code
- final int[] prevWordCodePointArray = (null == prevWord)
- ? null : StringUtils.toCodePointArray(prevWord);
+ final int[] prevWordCodePointArray = (null == prevWordsInfo.mPrevWord)
+ ? null : StringUtils.toCodePointArray(prevWordsInfo.mPrevWord);
final InputPointers inputPointers = composer.getInputPointers();
final boolean isGesture = composer.isBatchMode();
final int inputSize;
diff --git a/java/src/com/android/inputmethod/latin/Dictionary.java b/java/src/com/android/inputmethod/latin/Dictionary.java
index 5253cc3..aab1665 100644
--- a/java/src/com/android/inputmethod/latin/Dictionary.java
+++ b/java/src/com/android/inputmethod/latin/Dictionary.java
@@ -69,7 +69,7 @@
* Searches for suggestions for a given context. For the moment the context is only the
* previous word.
* @param composer the key sequence to match with coordinate info, as a WordComposer
- * @param prevWord the previous word, or null if none
+ * @param prevWordsInfo the information of previous words.
* @param proximityInfo the object for key proximity. May be ignored by some implementations.
* @param blockOffensiveWords whether to block potentially offensive words
* @param additionalFeaturesOptions options about additional features used for the suggestion.
@@ -79,10 +79,8 @@
* different language weight is used.
* @return the list of suggestions (possibly null if none)
*/
- // TODO: pass more context than just the previous word, to enable better suggestions (n-gram
- // and more)
abstract public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight);
@@ -156,7 +154,7 @@
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
return null;
diff --git a/java/src/com/android/inputmethod/latin/DictionaryCollection.java b/java/src/com/android/inputmethod/latin/DictionaryCollection.java
index 239fd06..e6e4e09 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryCollection.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryCollection.java
@@ -57,7 +57,7 @@
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
final CopyOnWriteArrayList<Dictionary> dictionaries = mDictionaries;
@@ -65,13 +65,13 @@
// To avoid creating unnecessary objects, we get the list out of the first
// dictionary and add the rest to it if not null, hence the get(0)
ArrayList<SuggestedWordInfo> suggestions = dictionaries.get(0).getSuggestions(composer,
- prevWord, proximityInfo, blockOffensiveWords, additionalFeaturesOptions,
+ prevWordsInfo, proximityInfo, blockOffensiveWords, additionalFeaturesOptions,
sessionId, inOutLanguageWeight);
if (null == suggestions) suggestions = CollectionUtils.newArrayList();
final int length = dictionaries.size();
for (int i = 1; i < length; ++ i) {
final ArrayList<SuggestedWordInfo> sugg = dictionaries.get(i).getSuggestions(composer,
- prevWord, proximityInfo, blockOffensiveWords, additionalFeaturesOptions,
+ prevWordsInfo, proximityInfo, blockOffensiveWords, additionalFeaturesOptions,
sessionId, inOutLanguageWeight);
if (null != sugg) suggestions.addAll(sugg);
}
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
index ddbb196..14c8bb6 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
@@ -444,7 +444,7 @@
// TODO: Revise the way to fusion suggestion results.
public SuggestionResults getSuggestionResults(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final ArrayList<SuggestedWordInfo> rawSuggestions) {
final Dictionaries dictionaries = mDictionaries;
@@ -455,7 +455,7 @@
final Dictionary dictionary = dictionaries.getDict(dictType);
if (null == dictionary) continue;
final ArrayList<SuggestedWordInfo> dictionarySuggestions =
- dictionary.getSuggestions(composer, prevWord, proximityInfo,
+ dictionary.getSuggestions(composer, prevWordsInfo, proximityInfo,
blockOffensiveWords, additionalFeaturesOptions, sessionId,
languageWeight);
if (null == dictionarySuggestions) continue;
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
index 4358f84..629f3fd 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -367,7 +367,7 @@
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
reloadDictionaryIfRequired();
@@ -380,7 +380,7 @@
return null;
}
final ArrayList<SuggestedWordInfo> suggestions =
- mBinaryDictionary.getSuggestions(composer, prevWord, proximityInfo,
+ mBinaryDictionary.getSuggestions(composer, prevWordsInfo, proximityInfo,
blockOffensiveWords, additionalFeaturesOptions, sessionId,
inOutLanguageWeight);
if (mBinaryDictionary.isCorrupted()) {
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index d100d32..5e45275 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1428,8 +1428,8 @@
if (DEBUG) {
if (mInputLogic.mWordComposer.isComposingWord()
|| mInputLogic.mWordComposer.isBatchMode()) {
- final String previousWord
- = mInputLogic.mWordComposer.getPreviousWordForSuggestion();
+ final PrevWordsInfo prevWordsInfo
+ = mInputLogic.mWordComposer.getPrevWordsInfoForSuggestion();
// TODO: this is for checking consistency with older versions. Remove this when
// we are confident this is stable.
// We're checking the previous word in the text field against the memorized previous
@@ -1438,14 +1438,14 @@
final CharSequence rereadPrevWord = mInputLogic.getNthPreviousWordForSuggestion(
currentSettings.mSpacingAndPunctuations,
mInputLogic.mWordComposer.isComposingWord() ? 2 : 1);
- if (!TextUtils.equals(previousWord, rereadPrevWord)) {
+ if (!TextUtils.equals(prevWordsInfo.mPrevWord, rereadPrevWord)) {
throw new RuntimeException("Unexpected previous word: "
- + previousWord + " <> " + rereadPrevWord);
+ + prevWordsInfo.mPrevWord + " <> " + rereadPrevWord);
}
}
}
mInputLogic.mSuggest.getSuggestedWords(mInputLogic.mWordComposer,
- mInputLogic.mWordComposer.getPreviousWordForSuggestion(),
+ mInputLogic.mWordComposer.getPrevWordsInfoForSuggestion(),
keyboard.getProximityInfo(), currentSettings.mBlockPotentiallyOffensive,
currentSettings.mCorrectionEnabled, additionalFeaturesOptions, sessionId,
sequenceNumber, callback);
diff --git a/java/src/com/android/inputmethod/latin/PrevWordsInfo.java b/java/src/com/android/inputmethod/latin/PrevWordsInfo.java
new file mode 100644
index 0000000..9d85431
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/PrevWordsInfo.java
@@ -0,0 +1,29 @@
+/*
+ * 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.latin;
+
+public class PrevWordsInfo {
+ // The previous word. May be null after resetting and before starting a new composing word, or
+ // when there is no context like at the start of text for example. It can also be set to null
+ // externally when the user enters a separator that does not let bigrams across, like a period
+ // or a comma.
+ public final String mPrevWord;
+
+ public PrevWordsInfo(final String prevWord) {
+ mPrevWord = prevWord;
+ }
+}
diff --git a/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java
index 15b1238..8f744be 100644
--- a/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java
@@ -50,12 +50,12 @@
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
if (mLock.readLock().tryLock()) {
try {
- return mBinaryDictionary.getSuggestions(composer, prevWord, proximityInfo,
+ return mBinaryDictionary.getSuggestions(composer, prevWordsInfo, proximityInfo,
blockOffensiveWords, additionalFeaturesOptions, sessionId,
inOutLanguageWeight);
} finally {
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 71355f4..e3759a5 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -71,17 +71,17 @@
}
public void getSuggestedWords(final WordComposer wordComposer,
- final String prevWordForBigram, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final boolean isCorrectionEnabled,
final int[] additionalFeaturesOptions, final int sessionId, final int sequenceNumber,
final OnGetSuggestedWordsCallback callback) {
- LatinImeLogger.onStartSuggestion(prevWordForBigram);
+ LatinImeLogger.onStartSuggestion(prevWordsInfo.mPrevWord);
if (wordComposer.isBatchMode()) {
- getSuggestedWordsForBatchInput(wordComposer, prevWordForBigram, proximityInfo,
+ getSuggestedWordsForBatchInput(wordComposer, prevWordsInfo, proximityInfo,
blockOffensiveWords, additionalFeaturesOptions, sessionId, sequenceNumber,
callback);
} else {
- getSuggestedWordsForTypingInput(wordComposer, prevWordForBigram, proximityInfo,
+ getSuggestedWordsForTypingInput(wordComposer, prevWordsInfo, proximityInfo,
blockOffensiveWords, isCorrectionEnabled, additionalFeaturesOptions,
sequenceNumber, callback);
}
@@ -90,7 +90,7 @@
// Retrieves suggestions for the typing input
// and calls the callback function with the suggestions.
private void getSuggestedWordsForTypingInput(final WordComposer wordComposer,
- final String prevWordForBigram, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final boolean isCorrectionEnabled,
final int[] additionalFeaturesOptions, final int sequenceNumber,
final OnGetSuggestedWordsCallback callback) {
@@ -108,7 +108,7 @@
rawSuggestions = null;
}
final SuggestionResults suggestionResults = mDictionaryFacilitator.getSuggestionResults(
- wordComposer, prevWordForBigram, proximityInfo, blockOffensiveWords,
+ wordComposer, prevWordsInfo, proximityInfo, blockOffensiveWords,
additionalFeaturesOptions, SESSION_TYPING, rawSuggestions);
final boolean isFirstCharCapitalized = wordComposer.isFirstCharCapitalized();
@@ -215,7 +215,7 @@
// Retrieves suggestions for the batch input
// and calls the callback function with the suggestions.
private void getSuggestedWordsForBatchInput(final WordComposer wordComposer,
- final String prevWordForBigram, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final int sequenceNumber,
final OnGetSuggestedWordsCallback callback) {
@@ -226,7 +226,7 @@
rawSuggestions = null;
}
final SuggestionResults suggestionResults = mDictionaryFacilitator.getSuggestionResults(
- wordComposer, prevWordForBigram, proximityInfo, blockOffensiveWords,
+ wordComposer, prevWordsInfo, proximityInfo, blockOffensiveWords,
additionalFeaturesOptions, sessionId, rawSuggestions);
for (SuggestedWordInfo wordInfo : suggestionResults) {
LatinImeLogger.onAddSuggestedWord(wordInfo.mWord, wordInfo.mSourceDict.mDictType);
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index 9cf71c7..227b42b 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -46,11 +46,9 @@
// The list of events that served to compose this string.
private final ArrayList<Event> mEvents;
private final InputPointers mInputPointers = new InputPointers(MAX_WORD_LENGTH);
- // The previous word (before the composing word). Used as context for suggestions. May be null
- // after resetting and before starting a new composing word, or when there is no context like
- // at the start of text for example. It can also be set to null externally when the user
- // enters a separator that does not let bigrams across, like a period or a comma.
- private String mPreviousWordForSuggestion;
+ // The information of previous words (before the composing word). Must not be null. Used as
+ // context for suggestions.
+ private PrevWordsInfo mPrevWordsInfo;
private String mAutoCorrection;
private boolean mIsResumed;
private boolean mIsBatchMode;
@@ -87,7 +85,7 @@
mIsBatchMode = false;
mCursorPositionWithinWord = 0;
mRejectedBatchModeSuggestion = null;
- mPreviousWordForSuggestion = null;
+ mPrevWordsInfo = new PrevWordsInfo(null);
refreshTypedWordCache();
}
@@ -119,7 +117,7 @@
mIsBatchMode = false;
mCursorPositionWithinWord = 0;
mRejectedBatchModeSuggestion = null;
- mPreviousWordForSuggestion = null;
+ mPrevWordsInfo = new PrevWordsInfo(null);
refreshTypedWordCache();
}
@@ -309,7 +307,7 @@
CoordinateUtils.yFromArray(coordinates, i)));
}
mIsResumed = true;
- mPreviousWordForSuggestion = null == previousWord ? null : previousWord.toString();
+ mPrevWordsInfo = new PrevWordsInfo(null == previousWord ? null : previousWord.toString());
}
/**
@@ -320,8 +318,8 @@
return mTypedWordCache.toString();
}
- public String getPreviousWordForSuggestion() {
- return mPreviousWordForSuggestion;
+ public PrevWordsInfo getPrevWordsInfoForSuggestion() {
+ return mPrevWordsInfo;
}
/**
@@ -379,7 +377,7 @@
public void setCapitalizedModeAndPreviousWordAtStartComposingTime(final int mode,
final CharSequence previousWord) {
mCapitalizedMode = mode;
- mPreviousWordForSuggestion = null == previousWord ? null : previousWord.toString();
+ mPrevWordsInfo = new PrevWordsInfo(null == previousWord ? null : previousWord.toString());
}
/**
@@ -430,7 +428,7 @@
mCapsCount = 0;
mDigitsCount = 0;
mIsBatchMode = false;
- mPreviousWordForSuggestion = committedWord.toString();
+ mPrevWordsInfo = new PrevWordsInfo(committedWord.toString());
mCombinerChain.reset();
mEvents.clear();
mCodePointSize = 0;
@@ -448,11 +446,11 @@
// when the user inputs a separator that's not whitespace (including the case of the
// double-space-to-period feature).
public void discardPreviousWordForSuggestion() {
- mPreviousWordForSuggestion = null;
+ mPrevWordsInfo = new PrevWordsInfo(null);
}
public void resumeSuggestionOnLastComposedWord(final LastComposedWord lastComposedWord,
- final String previousWord) {
+ final PrevWordsInfo prevWordsInfo) {
mEvents.clear();
Collections.copy(mEvents, lastComposedWord.mEvents);
mInputPointers.set(lastComposedWord.mInputPointers);
@@ -463,7 +461,7 @@
mCursorPositionWithinWord = mCodePointSize;
mRejectedBatchModeSuggestion = null;
mIsResumed = true;
- mPreviousWordForSuggestion = previousWord;
+ mPrevWordsInfo = prevWordsInfo;
}
public boolean isBatchMode() {
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java
index ddda52d..e951f5a 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java
@@ -23,6 +23,7 @@
import android.view.textservice.SuggestionsInfo;
import android.view.textservice.TextInfo;
+import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.utils.CollectionUtils;
import java.util.ArrayList;
@@ -57,7 +58,7 @@
final int offset = ssi.getOffsetAt(i);
final int length = ssi.getLengthAt(i);
final String subText = typedText.substring(offset, offset + length);
- final String prevWord = currentWord;
+ final PrevWordsInfo prevWordsInfo = new PrevWordsInfo(currentWord);
currentWord = subText;
if (!subText.contains(AndroidSpellCheckerService.SINGLE_QUOTE)) {
continue;
@@ -73,7 +74,7 @@
if (TextUtils.isEmpty(splitText)) {
continue;
}
- if (mSuggestionsCache.getSuggestionsFromCache(splitText, prevWord) == null) {
+ if (mSuggestionsCache.getSuggestionsFromCache(splitText, prevWordsInfo) == null) {
continue;
}
final int newLength = splitText.length();
@@ -148,7 +149,8 @@
} else {
prevWord = null;
}
- retval[i] = onGetSuggestionsInternal(textInfos[i], prevWord, suggestionsLimit);
+ final PrevWordsInfo prevWordsInfo = new PrevWordsInfo(prevWord);
+ retval[i] = onGetSuggestionsInternal(textInfos[i], prevWordsInfo, suggestionsLimit);
retval[i].setCookieAndSequence(textInfos[i].getCookie(),
textInfos[i].getSequence());
}
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
index 4c23d22..cf26000 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
@@ -31,6 +31,7 @@
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.WordComposer;
import com.android.inputmethod.latin.spellcheck.AndroidSpellCheckerService.SuggestionsGatherer;
@@ -71,26 +72,26 @@
new LruCache<String, SuggestionsParams>(MAX_CACHE_SIZE);
// TODO: Support n-gram input
- private static String generateKey(String query, String prevWord) {
- if (TextUtils.isEmpty(query) || TextUtils.isEmpty(prevWord)) {
+ private static String generateKey(final String query, final PrevWordsInfo prevWordsInfo) {
+ if (TextUtils.isEmpty(query) || TextUtils.isEmpty(prevWordsInfo.mPrevWord)) {
return query;
}
- return query + CHAR_DELIMITER + prevWord;
+ return query + CHAR_DELIMITER + prevWordsInfo.mPrevWord;
}
- // TODO: Support n-gram input
- public SuggestionsParams getSuggestionsFromCache(String query, String prevWord) {
- return mUnigramSuggestionsInfoCache.get(generateKey(query, prevWord));
+ public SuggestionsParams getSuggestionsFromCache(String query,
+ final PrevWordsInfo prevWordsInfo) {
+ return mUnigramSuggestionsInfoCache.get(generateKey(query, prevWordsInfo));
}
- // TODO: Support n-gram input
public void putSuggestionsToCache(
- String query, String prevWord, String[] suggestions, int flags) {
+ final String query, final PrevWordsInfo prevWordsInfo,
+ final String[] suggestions, final int flags) {
if (suggestions == null || TextUtils.isEmpty(query)) {
return;
}
mUnigramSuggestionsInfoCache.put(
- generateKey(query, prevWord), new SuggestionsParams(suggestions, flags));
+ generateKey(query, prevWordsInfo), new SuggestionsParams(suggestions, flags));
}
public void clearCache() {
@@ -259,11 +260,12 @@
}
protected SuggestionsInfo onGetSuggestionsInternal(
- final TextInfo textInfo, final String prevWord, final int suggestionsLimit) {
+ final TextInfo textInfo, final PrevWordsInfo prevWordsInfo,
+ final int suggestionsLimit) {
try {
final String inText = textInfo.getText();
final SuggestionsParams cachedSuggestionsParams =
- mSuggestionsCache.getSuggestionsFromCache(inText, prevWord);
+ mSuggestionsCache.getSuggestionsFromCache(inText, prevWordsInfo);
if (cachedSuggestionsParams != null) {
if (DBG) {
Log.d(TAG, "Cache hit: " + inText + ", " + cachedSuggestionsParams.mFlags);
@@ -325,7 +327,7 @@
composer.setComposingWord(codePoints, coordinates, null /* previousWord */);
// TODO: make a spell checker option to block offensive words or not
final ArrayList<SuggestedWordInfo> suggestions =
- dictInfo.mDictionary.getSuggestions(composer, prevWord,
+ dictInfo.mDictionary.getSuggestions(composer, prevWordsInfo,
dictInfo.getProximityInfo(), true /* blockOffensiveWords */,
null /* additionalFeaturesOptions */, 0 /* sessionId */,
null /* inOutLanguageWeight */);
@@ -369,7 +371,8 @@
.getValueOf_RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS()
: 0);
final SuggestionsInfo retval = new SuggestionsInfo(flags, result.mSuggestions);
- mSuggestionsCache.putSuggestionsToCache(text, prevWord, result.mSuggestions, flags);
+ mSuggestionsCache.putSuggestionsToCache(text, prevWordsInfo, result.mSuggestions,
+ flags);
return retval;
} catch (RuntimeException e) {
// Don't kill the keyboard if there is a bug in the spell checker
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java b/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java
index 0be2568..ba2e0c3 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java
@@ -20,6 +20,7 @@
import com.android.inputmethod.keyboard.ProximityInfo;
import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.WordComposer;
import com.android.inputmethod.latin.utils.CollectionUtils;
@@ -52,7 +53,7 @@
// TODO: this dummy dictionary should be a singleton in the Dictionary class.
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
- final String prevWord, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
return noSuggestions;
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java
index 5f6e168..7507566 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedContactsBinaryDictionary.java
@@ -20,6 +20,7 @@
import com.android.inputmethod.keyboard.ProximityInfo;
import com.android.inputmethod.latin.ContactsBinaryDictionary;
+import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.WordComposer;
@@ -36,11 +37,11 @@
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer codes,
- final String prevWordForBigrams, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
synchronized (mLock) {
- return super.getSuggestions(codes, prevWordForBigrams, proximityInfo,
+ return super.getSuggestions(codes, prevWordsInfo, proximityInfo,
blockOffensiveWords, additionalFeaturesOptions, sessionId, inOutLanguageWeight);
}
}
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java b/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java
index 0499ad2..f2d981a 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/SynchronouslyLoadedUserBinaryDictionary.java
@@ -19,6 +19,7 @@
import android.content.Context;
import com.android.inputmethod.keyboard.ProximityInfo;
+import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.UserBinaryDictionary;
import com.android.inputmethod.latin.WordComposer;
@@ -41,11 +42,11 @@
@Override
public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer codes,
- final String prevWordForBigrams, final ProximityInfo proximityInfo,
+ final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
final int sessionId, final float[] inOutLanguageWeight) {
synchronized (mLock) {
- return super.getSuggestions(codes, prevWordForBigrams, proximityInfo,
+ return super.getSuggestions(codes, prevWordsInfo, proximityInfo,
blockOffensiveWords, additionalFeaturesOptions, sessionId, inOutLanguageWeight);
}
}
diff --git a/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java b/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java
index 05387d5..a219532 100644
--- a/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java
+++ b/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java
@@ -24,6 +24,7 @@
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.Suggest;
import com.android.inputmethod.latin.Suggest.OnGetSuggestedWordsCallback;
import com.android.inputmethod.latin.SuggestedWords;
@@ -88,13 +89,13 @@
/**
* Determine whether a word is a distracter to words in dictionaries.
*
- * @param prevWord the previous word, or null if none.
+ * @param prevWordsInfo the information of previous words.
* @param testedWord the word that will be tested to see whether it is a distracter to words
* in dictionaries.
* @param locale the locale of words.
* @return true if testedWord is a distracter, otherwise false.
*/
- public boolean isDistracterToWordsInDictionaries(final String prevWord,
+ public boolean isDistracterToWordsInDictionaries(final PrevWordsInfo prevWordsInfo,
final String testedWord, final Locale locale) {
if (mKeyboard == null || locale == null) {
return false;
@@ -113,7 +114,7 @@
final int[] codePoints = StringUtils.toCodePointArray(testedWord);
final int[] coordinates;
coordinates = mKeyboard.getCoordinates(codePoints);
- composer.setComposingWord(codePoints, coordinates, prevWord);
+ composer.setComposingWord(codePoints, coordinates, prevWordsInfo.mPrevWord);
final int trailingSingleQuotesCount = StringUtils.getTrailingSingleQuotesCount(testedWord);
final String consideredWord = trailingSingleQuotesCount > 0 ?
@@ -133,7 +134,7 @@
}
}
};
- mSuggest.getSuggestedWords(composer, prevWord, mKeyboard.getProximityInfo(),
+ mSuggest.getSuggestedWords(composer, prevWordsInfo, mKeyboard.getProximityInfo(),
true /* blockOffensiveWords */, true /* isCorrectionEnbaled */,
null /* additionalFeaturesOptions */, 0 /* sessionId */,
SuggestedWords.NOT_A_SEQUENCE_NUMBER, callback);
diff --git a/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java b/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java
index 2d6796e..aaf4a40 100644
--- a/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java
+++ b/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java
@@ -20,6 +20,7 @@
import com.android.inputmethod.latin.Dictionary;
import com.android.inputmethod.latin.DictionaryFacilitatorForSuggest;
+import com.android.inputmethod.latin.PrevWordsInfo;
import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
import java.util.ArrayList;
@@ -85,7 +86,7 @@
final ArrayList<LanguageModelParam> languageModelParams =
CollectionUtils.newArrayList();
final int N = tokens.size();
- String prevWord = null;
+ PrevWordsInfo prevWordsInfo = new PrevWordsInfo(null);
for (int i = 0; i < N; ++i) {
final String tempWord = tokens.get(i);
if (StringUtils.isEmptyStringOrWhiteSpaces(tempWord)) {
@@ -102,7 +103,7 @@
+ tempWord + "\"");
}
// Sentence terminator found. Split.
- prevWord = null;
+ prevWordsInfo = new PrevWordsInfo(null);
continue;
}
if (DEBUG_TOKEN) {
@@ -110,19 +111,19 @@
}
final LanguageModelParam languageModelParam =
detectWhetherVaildWordOrNotAndGetLanguageModelParam(
- prevWord, tempWord, timestamp, dictionaryFacilitator,
+ prevWordsInfo, tempWord, timestamp, dictionaryFacilitator,
distracterFilter);
if (languageModelParam == null) {
continue;
}
languageModelParams.add(languageModelParam);
- prevWord = languageModelParam.mTargetWord;
+ prevWordsInfo = new PrevWordsInfo(languageModelParam.mTargetWord);
}
return languageModelParams;
}
private static LanguageModelParam detectWhetherVaildWordOrNotAndGetLanguageModelParam(
- final String prevWord, final String targetWord, final int timestamp,
+ final PrevWordsInfo prevWordsInfo, final String targetWord, final int timestamp,
final DictionaryFacilitatorForSuggest dictionaryFacilitator,
final DistracterFilter distracterFilter) {
final Locale locale = dictionaryFacilitator.getLocale();
@@ -133,14 +134,14 @@
// distracterFilter in the following code. If targetWord is a distracter,
// it should be filtered out.
if (dictionaryFacilitator.isValidWord(targetWord, false /* ignoreCase */)) {
- return createAndGetLanguageModelParamOfWord(prevWord, targetWord, timestamp,
+ return createAndGetLanguageModelParamOfWord(prevWordsInfo, targetWord, timestamp,
true /* isValidWord */, locale);
}
final String lowerCaseTargetWord = targetWord.toLowerCase(locale);
if (dictionaryFacilitator.isValidWord(lowerCaseTargetWord, false /* ignoreCase */)) {
// Add the lower-cased word.
- return createAndGetLanguageModelParamOfWord(prevWord, lowerCaseTargetWord,
+ return createAndGetLanguageModelParamOfWord(prevWordsInfo, lowerCaseTargetWord,
timestamp, true /* isValidWord */, locale);
}
@@ -150,26 +151,26 @@
// Adding such a word to dictonaries would interfere with entering in-dictionary words. For
// example, adding "mot" to dictionaries might interfere with entering "not".
// This kind of OOV should be filtered out.
- if (distracterFilter.isDistracterToWordsInDictionaries(prevWord, targetWord, locale)) {
+ if (distracterFilter.isDistracterToWordsInDictionaries(prevWordsInfo, targetWord, locale)) {
return null;
}
- return createAndGetLanguageModelParamOfWord(prevWord, targetWord, timestamp,
+ return createAndGetLanguageModelParamOfWord(prevWordsInfo, targetWord, timestamp,
false /* isValidWord */, locale);
}
private static LanguageModelParam createAndGetLanguageModelParamOfWord(
- final String prevWord, final String targetWord, final int timestamp,
+ final PrevWordsInfo prevWordsInfo, final String targetWord, final int timestamp,
final boolean isValidWord, final Locale locale) {
final String word;
if (StringUtils.getCapitalizationType(targetWord) == StringUtils.CAPITALIZE_FIRST
- && prevWord == null && !isValidWord) {
+ && prevWordsInfo.mPrevWord == null && !isValidWord) {
word = targetWord.toLowerCase(locale);
} else {
word = targetWord;
}
final int unigramProbability = isValidWord ?
UNIGRAM_PROBABILITY_FOR_VALID_WORD : UNIGRAM_PROBABILITY_FOR_OOV_WORD;
- if (prevWord == null) {
+ if (prevWordsInfo.mPrevWord == null) {
if (DEBUG) {
Log.d(TAG, "--- add unigram: current("
+ (isValidWord ? "Valid" : "OOV") + ") = " + word);
@@ -177,12 +178,12 @@
return new LanguageModelParam(word, unigramProbability, timestamp);
}
if (DEBUG) {
- Log.d(TAG, "--- add bigram: prev = " + prevWord + ", current("
+ Log.d(TAG, "--- add bigram: prev = " + prevWordsInfo.mPrevWord + ", current("
+ (isValidWord ? "Valid" : "OOV") + ") = " + word);
}
final int bigramProbability = isValidWord ?
BIGRAM_PROBABILITY_FOR_VALID_WORD : BIGRAM_PROBABILITY_FOR_OOV_WORD;
- return new LanguageModelParam(prevWord, word, unigramProbability,
+ return new LanguageModelParam(prevWordsInfo.mPrevWord, word, unigramProbability,
bigramProbability, timestamp);
}
}
diff --git a/native/jni/src/suggest/core/dicnode/dic_node.h b/native/jni/src/suggest/core/dicnode/dic_node.h
index 47f5ec0..e69d2c4 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node.h
@@ -103,10 +103,10 @@
PROF_NODE_COPY(&dicNode->mProfiler, mProfiler);
}
- // Init for root with prevWordPtNodePos which is used for bigram
- void initAsRoot(const int rootPtNodeArrayPos, const int prevWordPtNodePos) {
+ // Init for root with prevWordsPtNodePos which is used for n-gram
+ void initAsRoot(const int rootPtNodeArrayPos, const int *const prevWordsPtNodePos) {
mIsCachedForNextSuggestion = false;
- mDicNodeProperties.init(rootPtNodeArrayPos, prevWordPtNodePos);
+ mDicNodeProperties.init(rootPtNodeArrayPos, prevWordsPtNodePos);
mDicNodeState.init();
PROF_NODE_RESET(mProfiler);
}
@@ -114,7 +114,12 @@
// Init for root with previous word
void initAsRootWithPreviousWord(const DicNode *const dicNode, const int rootPtNodeArrayPos) {
mIsCachedForNextSuggestion = dicNode->mIsCachedForNextSuggestion;
- mDicNodeProperties.init(rootPtNodeArrayPos, dicNode->mDicNodeProperties.getPtNodePos());
+ int newPrevWordsPtNodePos[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+ newPrevWordsPtNodePos[0] = dicNode->mDicNodeProperties.getPtNodePos();
+ for (size_t i = 1; i < NELEMS(newPrevWordsPtNodePos); ++i) {
+ newPrevWordsPtNodePos[i] = dicNode->getNthPrevWordTerminalPtNodePos(i);
+ }
+ mDicNodeProperties.init(rootPtNodeArrayPos, newPrevWordsPtNodePos);
mDicNodeState.initAsRootWithPreviousWord(&dicNode->mDicNodeState,
dicNode->mDicNodeProperties.getDepth());
PROF_NODE_COPY(&dicNode->mProfiler, mProfiler);
@@ -140,7 +145,7 @@
dicNode->mDicNodeProperties.getLeavingDepth() + mergedNodeCodePointCount);
mDicNodeProperties.init(ptNodePos, childrenPtNodeArrayPos, mergedNodeCodePoints[0],
probability, isTerminal, hasChildren, isBlacklistedOrNotAWord, newDepth,
- newLeavingDepth, dicNode->mDicNodeProperties.getPrevWordTerminalPtNodePos());
+ newLeavingDepth, dicNode->mDicNodeProperties.getPrevWordsTerminalPtNodePos());
mDicNodeState.init(&dicNode->mDicNodeState, mergedNodeCodePointCount,
mergedNodeCodePoints);
PROF_NODE_COPY(&dicNode->mProfiler, mProfiler);
@@ -198,14 +203,17 @@
return mDicNodeState.mDicNodeStateInput.getInputIndex(0) < inputSize - 1;
}
- // Used to get bigram probability in DicNodeUtils
+ // Used to get n-gram probability in DicNodeUtils
int getPtNodePos() const {
return mDicNodeProperties.getPtNodePos();
}
- // Used to get bigram probability in DicNodeUtils
- int getPrevWordTerminalPtNodePos() const {
- return mDicNodeProperties.getPrevWordTerminalPtNodePos();
+ // Used to get n-gram probability in DicNodeUtils
+ int getNthPrevWordTerminalPtNodePos(const int n) const {
+ if (n <= 0 || n > MAX_PREV_WORD_COUNT_FOR_N_GRAM) {
+ return NOT_A_DICT_POS;
+ }
+ return mDicNodeProperties.getPrevWordsTerminalPtNodePos()[n - 1];
}
// Used in DicNodeUtils
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp b/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
index 2d02a7d..bf2a000 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
+++ b/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
@@ -29,8 +29,8 @@
/* static */ void DicNodeUtils::initAsRoot(
const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
- const int prevWordPtNodePos, DicNode *const newRootDicNode) {
- newRootDicNode->initAsRoot(dictionaryStructurePolicy->getRootPosition(), prevWordPtNodePos);
+ const int *const prevWordsPtNodePos, DicNode *const newRootDicNode) {
+ newRootDicNode->initAsRoot(dictionaryStructurePolicy->getRootPosition(), prevWordsPtNodePos);
}
/*static */ void DicNodeUtils::initAsRootWithPreviousWord(
@@ -86,7 +86,7 @@
const DicNode *const dicNode, MultiBigramMap *const multiBigramMap) {
const int unigramProbability = dicNode->getProbability();
const int ptNodePos = dicNode->getPtNodePos();
- const int prevWordTerminalPtNodePos = dicNode->getPrevWordTerminalPtNodePos();
+ const int prevWordTerminalPtNodePos = dicNode->getNthPrevWordTerminalPtNodePos(1 /* n */);
if (NOT_A_DICT_POS == ptNodePos || NOT_A_DICT_POS == prevWordTerminalPtNodePos) {
// Note: Normally wordPos comes from the dictionary and should never equal
// NOT_A_VALID_WORD_POS.
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_utils.h b/native/jni/src/suggest/core/dicnode/dic_node_utils.h
index 4c0f1f1..0d60e57 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_utils.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_utils.h
@@ -30,7 +30,7 @@
public:
static void initAsRoot(
const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
- const int prevWordPtNodePos, DicNode *const newRootDicNode);
+ const int *const prevWordPtNodePos, DicNode *const newRootDicNode);
static void initAsRootWithPreviousWord(
const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
const DicNode *const prevWordLastDicNode, DicNode *const newRootDicNode);
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
index 11f8c29..8202176 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
@@ -32,15 +32,14 @@
: mPtNodePos(NOT_A_DICT_POS), mChildrenPtNodeArrayPos(NOT_A_DICT_POS),
mProbability(NOT_A_PROBABILITY), mDicNodeCodePoint(NOT_A_CODE_POINT),
mIsTerminal(false), mHasChildrenPtNodes(false),
- mIsBlacklistedOrNotAWord(false), mDepth(0), mLeavingDepth(0),
- mPrevWordTerminalPtNodePos(NOT_A_DICT_POS) {}
+ mIsBlacklistedOrNotAWord(false), mDepth(0), mLeavingDepth(0) {}
~DicNodeProperties() {}
// Should be called only once per DicNode is initialized.
void init(const int pos, const int childrenPos, const int nodeCodePoint, const int probability,
const bool isTerminal, const bool hasChildren, const bool isBlacklistedOrNotAWord,
- const uint16_t depth, const uint16_t leavingDepth, const int prevWordNodePos) {
+ const uint16_t depth, const uint16_t leavingDepth, const int *const prevWordsNodePos) {
mPtNodePos = pos;
mChildrenPtNodeArrayPos = childrenPos;
mDicNodeCodePoint = nodeCodePoint;
@@ -50,11 +49,11 @@
mIsBlacklistedOrNotAWord = isBlacklistedOrNotAWord;
mDepth = depth;
mLeavingDepth = leavingDepth;
- mPrevWordTerminalPtNodePos = prevWordNodePos;
+ memmove(mPrevWordsTerminalPtNodePos, prevWordsNodePos, sizeof(mPrevWordsTerminalPtNodePos));
}
- // Init for root with prevWordPtNodePos which is used for bigram
- void init(const int rootPtNodeArrayPos, const int prevWordNodePos) {
+ // Init for root with prevWordsPtNodePos which is used for n-gram
+ void init(const int rootPtNodeArrayPos, const int *const prevWordsNodePos) {
mPtNodePos = NOT_A_DICT_POS;
mChildrenPtNodeArrayPos = rootPtNodeArrayPos;
mDicNodeCodePoint = NOT_A_CODE_POINT;
@@ -64,7 +63,7 @@
mIsBlacklistedOrNotAWord = false;
mDepth = 0;
mLeavingDepth = 0;
- mPrevWordTerminalPtNodePos = prevWordNodePos;
+ memmove(mPrevWordsTerminalPtNodePos, prevWordsNodePos, sizeof(mPrevWordsTerminalPtNodePos));
}
void initByCopy(const DicNodeProperties *const dicNodeProp) {
@@ -77,7 +76,8 @@
mIsBlacklistedOrNotAWord = dicNodeProp->mIsBlacklistedOrNotAWord;
mDepth = dicNodeProp->mDepth;
mLeavingDepth = dicNodeProp->mLeavingDepth;
- mPrevWordTerminalPtNodePos = dicNodeProp->mPrevWordTerminalPtNodePos;
+ memmove(mPrevWordsTerminalPtNodePos, dicNodeProp->mPrevWordsTerminalPtNodePos,
+ sizeof(mPrevWordsTerminalPtNodePos));
}
// Init as passing child
@@ -91,7 +91,8 @@
mIsBlacklistedOrNotAWord = dicNodeProp->mIsBlacklistedOrNotAWord;
mDepth = dicNodeProp->mDepth + 1; // Increment the depth of a passing child
mLeavingDepth = dicNodeProp->mLeavingDepth;
- mPrevWordTerminalPtNodePos = dicNodeProp->mPrevWordTerminalPtNodePos;
+ memmove(mPrevWordsTerminalPtNodePos, dicNodeProp->mPrevWordsTerminalPtNodePos,
+ sizeof(mPrevWordsTerminalPtNodePos));
}
int getPtNodePos() const {
@@ -131,8 +132,8 @@
return mIsBlacklistedOrNotAWord;
}
- int getPrevWordTerminalPtNodePos() const {
- return mPrevWordTerminalPtNodePos;
+ const int *getPrevWordsTerminalPtNodePos() const {
+ return mPrevWordsTerminalPtNodePos;
}
private:
@@ -148,7 +149,7 @@
bool mIsBlacklistedOrNotAWord;
uint16_t mDepth;
uint16_t mLeavingDepth;
- int mPrevWordTerminalPtNodePos;
+ int mPrevWordsTerminalPtNodePos[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
};
} // namespace latinime
#endif // LATINIME_DIC_NODE_PROPERTIES_H
diff --git a/native/jni/src/suggest/core/dictionary/bigram_dictionary.cpp b/native/jni/src/suggest/core/dictionary/bigram_dictionary.cpp
index 847fa1b..295e760 100644
--- a/native/jni/src/suggest/core/dictionary/bigram_dictionary.cpp
+++ b/native/jni/src/suggest/core/dictionary/bigram_dictionary.cpp
@@ -48,21 +48,10 @@
*/
void BigramDictionary::getPredictions(const PrevWordsInfo *const prevWordsInfo,
SuggestionResults *const outSuggestionResults) const {
- int pos = getBigramListPositionForWord(prevWordsInfo->getPrevWordCodePoints(),
- prevWordsInfo->getPrevWordCodePointCount(), false /* forceLowerCaseSearch */);
- // getBigramListPositionForWord returns 0 if this word isn't in the dictionary or has no bigrams
- if (NOT_A_DICT_POS == pos) {
- // If no bigrams for this exact word, search again in lower case.
- pos = getBigramListPositionForWord(prevWordsInfo->getPrevWordCodePoints(),
- prevWordsInfo->getPrevWordCodePointCount(), true /* forceLowerCaseSearch */);
- }
- // If still no bigrams, we really don't have them!
- if (NOT_A_DICT_POS == pos) return;
-
int unigramProbability = 0;
int bigramCodePoints[MAX_WORD_LENGTH];
- BinaryDictionaryBigramsIterator bigramsIt(
- mDictionaryStructurePolicy->getBigramsStructurePolicy(), pos);
+ BinaryDictionaryBigramsIterator bigramsIt =
+ prevWordsInfo->getBigramsIteratorForPrediction(mDictionaryStructurePolicy);
while (bigramsIt.hasNext()) {
bigramsIt.next();
if (bigramsIt.getBigramPos() == NOT_A_DICT_POS) {
@@ -98,16 +87,11 @@
int BigramDictionary::getBigramProbability(const PrevWordsInfo *const prevWordsInfo,
const int *word1, int length1) const {
- int pos = getBigramListPositionForWord(prevWordsInfo->getPrevWordCodePoints(),
- prevWordsInfo->getPrevWordCodePointCount(), false /* forceLowerCaseSearch */);
- // getBigramListPositionForWord returns 0 if this word isn't in the dictionary or has no bigrams
- if (NOT_A_DICT_POS == pos) return NOT_A_PROBABILITY;
int nextWordPos = mDictionaryStructurePolicy->getTerminalPtNodePositionOfWord(word1, length1,
false /* forceLowerCaseSearch */);
if (NOT_A_DICT_POS == nextWordPos) return NOT_A_PROBABILITY;
-
- BinaryDictionaryBigramsIterator bigramsIt(
- mDictionaryStructurePolicy->getBigramsStructurePolicy(), pos);
+ BinaryDictionaryBigramsIterator bigramsIt =
+ prevWordsInfo->getBigramsIteratorForPrediction(mDictionaryStructurePolicy);
while (bigramsIt.hasNext()) {
bigramsIt.next();
if (bigramsIt.getBigramPos() == nextWordPos
diff --git a/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h b/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h
index d16ac47..bc9d576 100644
--- a/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h
+++ b/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h
@@ -30,6 +30,11 @@
mBigramPos(NOT_A_DICT_POS), mProbability(NOT_A_PROBABILITY),
mHasNext(pos != NOT_A_DICT_POS) {}
+ BinaryDictionaryBigramsIterator(BinaryDictionaryBigramsIterator &&bigramsIterator)
+ : mBigramsStructurePolicy(bigramsIterator.mBigramsStructurePolicy),
+ mPos(bigramsIterator.mPos), mBigramPos(bigramsIterator.mBigramPos),
+ mProbability(bigramsIterator.mProbability), mHasNext(bigramsIterator.mHasNext) {}
+
AK_FORCE_INLINE bool hasNext() const {
return mHasNext;
}
diff --git a/native/jni/src/suggest/core/session/dic_traverse_session.cpp b/native/jni/src/suggest/core/session/dic_traverse_session.cpp
index b9e9db7..dc2b66a 100644
--- a/native/jni/src/suggest/core/session/dic_traverse_session.cpp
+++ b/native/jni/src/suggest/core/session/dic_traverse_session.cpp
@@ -35,21 +35,8 @@
mMultiWordCostMultiplier = getDictionaryStructurePolicy()->getHeaderStructurePolicy()
->getMultiWordCostMultiplier();
mSuggestOptions = suggestOptions;
- if (!prevWordsInfo->getPrevWordCodePoints()) {
- mPrevWordsPtNodePos[0] = NOT_A_DICT_POS;
- return;
- }
- // TODO: merge following similar calls to getTerminalPosition into one case-insensitive call.
- mPrevWordsPtNodePos[0] = getDictionaryStructurePolicy()->getTerminalPtNodePositionOfWord(
- prevWordsInfo->getPrevWordCodePoints(), prevWordsInfo->getPrevWordCodePointCount(),
- false /* forceLowerCaseSearch */);
- if (mPrevWordsPtNodePos[0] == NOT_A_DICT_POS) {
- // Check bigrams for lower-cased previous word if original was not found. Useful for
- // auto-capitalized words like "The [current_word]".
- mPrevWordsPtNodePos[0] = getDictionaryStructurePolicy()->getTerminalPtNodePositionOfWord(
- prevWordsInfo->getPrevWordCodePoints(), prevWordsInfo->getPrevWordCodePointCount(),
- true /* forceLowerCaseSearch */);
- }
+ prevWordsInfo->getPrevWordsTerminalPtNodePos(
+ getDictionaryStructurePolicy(), mPrevWordsPtNodePos);
}
void DicTraverseSession::setupForGetSuggestions(const ProximityInfo *pInfo,
diff --git a/native/jni/src/suggest/core/session/dic_traverse_session.h b/native/jni/src/suggest/core/session/dic_traverse_session.h
index 90aff06..5a51a11 100644
--- a/native/jni/src/suggest/core/session/dic_traverse_session.h
+++ b/native/jni/src/suggest/core/session/dic_traverse_session.h
@@ -79,7 +79,7 @@
//--------------------
const ProximityInfo *getProximityInfo() const { return mProximityInfo; }
const SuggestOptions *getSuggestOptions() const { return mSuggestOptions; }
- int getPrevWordPtNodePos() const { return mPrevWordsPtNodePos[0]; }
+ const int *getPrevWordsPtNodePos() const { return mPrevWordsPtNodePos; }
DicNodesCache *getDicTraverseCache() { return &mDicNodesCache; }
MultiBigramMap *getMultiBigramMap() { return &mMultiBigramMap; }
const ProximityInfoState *getProximityInfoState(int id) const {
diff --git a/native/jni/src/suggest/core/session/prev_words_info.h b/native/jni/src/suggest/core/session/prev_words_info.h
index bc68594..70a99ef3 100644
--- a/native/jni/src/suggest/core/session/prev_words_info.h
+++ b/native/jni/src/suggest/core/session/prev_words_info.h
@@ -18,6 +18,8 @@
#define LATINIME_PREV_WORDS_INFO_H
#include "defines.h"
+#include "suggest/core/dictionary/binary_dictionary_bigrams_iterator.h"
+#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
namespace latinime {
@@ -38,17 +40,64 @@
mPrevWordCodePointCount[0] = prevWordCodePointCount;
mIsBeginningOfSentence[0] = isBeginningOfSentence;
}
- const int *getPrevWordCodePoints() const {
- return mPrevWordCodePoints[0];
+
+ void getPrevWordsTerminalPtNodePos(
+ const DictionaryStructureWithBufferPolicy *const dictStructurePolicy,
+ int *const outPrevWordsTerminalPtNodePos) const {
+ for (size_t i = 0; i < NELEMS(mPrevWordCodePoints); ++i) {
+ outPrevWordsTerminalPtNodePos[i] = getTerminalPtNodePosOfWord(dictStructurePolicy,
+ mPrevWordCodePoints[i], mPrevWordCodePointCount[i],
+ mIsBeginningOfSentence[i]);
+ }
}
- int getPrevWordCodePointCount() const {
- return mPrevWordCodePointCount[0];
+ BinaryDictionaryBigramsIterator getBigramsIteratorForPrediction(
+ const DictionaryStructureWithBufferPolicy *const dictStructurePolicy) const {
+ int pos = getBigramListPositionForWord(dictStructurePolicy, mPrevWordCodePoints[0],
+ mPrevWordCodePointCount[0], false /* forceLowerCaseSearch */);
+ // getBigramListPositionForWord returns NOT_A_DICT_POS if this word isn't in the
+ // dictionary or has no bigrams
+ if (NOT_A_DICT_POS == pos) {
+ // If no bigrams for this exact word, search again in lower case.
+ pos = getBigramListPositionForWord(dictStructurePolicy, mPrevWordCodePoints[0],
+ mPrevWordCodePointCount[0], true /* forceLowerCaseSearch */);
+ }
+ return BinaryDictionaryBigramsIterator(
+ dictStructurePolicy->getBigramsStructurePolicy(), pos);
}
private:
DISALLOW_COPY_AND_ASSIGN(PrevWordsInfo);
+ static int getTerminalPtNodePosOfWord(
+ const DictionaryStructureWithBufferPolicy *const dictStructurePolicy,
+ const int *const wordCodePoints, const int wordCodePointCount,
+ const bool isBeginningOfSentence) {
+ if (!dictStructurePolicy || !wordCodePoints) {
+ return NOT_A_DICT_POS;
+ }
+ const int wordPtNodePos = dictStructurePolicy->getTerminalPtNodePositionOfWord(
+ wordCodePoints, wordCodePointCount, false /* forceLowerCaseSearch */);
+ if (wordPtNodePos != NOT_A_DICT_POS) {
+ return wordPtNodePos;
+ }
+ // Check bigrams for lower-cased previous word if original was not found. Useful for
+ // auto-capitalized words like "The [current_word]".
+ return dictStructurePolicy->getTerminalPtNodePositionOfWord(
+ wordCodePoints, wordCodePointCount, true /* forceLowerCaseSearch */);
+ }
+
+ static int getBigramListPositionForWord(
+ const DictionaryStructureWithBufferPolicy *const dictStructurePolicy,
+ const int *wordCodePoints, const int wordCodePointCount,
+ const bool forceLowerCaseSearch) {
+ if (!wordCodePoints || wordCodePointCount <= 0) return NOT_A_DICT_POS;
+ const int terminalPtNodePos = dictStructurePolicy->getTerminalPtNodePositionOfWord(
+ wordCodePoints, wordCodePointCount, forceLowerCaseSearch);
+ if (NOT_A_DICT_POS == terminalPtNodePos) return NOT_A_DICT_POS;
+ return dictStructurePolicy->getBigramsPositionOfPtNode(terminalPtNodePos);
+ }
+
void clear() {
for (size_t i = 0; i < NELEMS(mPrevWordCodePoints); ++i) {
mPrevWordCodePoints[i] = nullptr;
diff --git a/native/jni/src/suggest/core/suggest.cpp b/native/jni/src/suggest/core/suggest.cpp
index e675e0b..0cd305f 100644
--- a/native/jni/src/suggest/core/suggest.cpp
+++ b/native/jni/src/suggest/core/suggest.cpp
@@ -92,7 +92,7 @@
// Create a new dic node here
DicNode rootNode;
DicNodeUtils::initAsRoot(traverseSession->getDictionaryStructurePolicy(),
- traverseSession->getPrevWordPtNodePos(), &rootNode);
+ traverseSession->getPrevWordsPtNodePos(), &rootNode);
traverseSession->getDicTraverseCache()->copyPushActive(&rootNode);
}
}
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java
index fb5231b..4f4f01c 100644
--- a/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java
@@ -35,7 +35,7 @@
private static final String ILLEGAL_THEME_ID_STRING = "ThisCausesNumberFormatExecption";
private static final int THEME_ID_ICS = KeyboardTheme.THEME_ID_ICS;
private static final int THEME_ID_KLP = KeyboardTheme.THEME_ID_KLP;
- private static final int THEME_ID_LXX = KeyboardTheme.THEME_ID_LXX;
+ private static final int THEME_ID_LXX_DARK = KeyboardTheme.THEME_ID_LXX_DARK;
@Override
protected void setUp() throws Exception {
@@ -51,7 +51,7 @@
switch (themeId) {
case THEME_ID_ICS:
case THEME_ID_KLP:
- case THEME_ID_LXX:
+ case THEME_ID_LXX_DARK:
return true;
default:
return false;
@@ -95,7 +95,7 @@
assertKeyboardThemePreference(sdkVersion, THEME_ID_NULL, defaultThemeId);
assertKeyboardThemePreference(sdkVersion, THEME_ID_ICS, THEME_ID_ICS);
assertKeyboardThemePreference(sdkVersion, THEME_ID_KLP, THEME_ID_KLP);
- assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX, THEME_ID_LXX);
+ assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK);
assertKeyboardThemePreference(sdkVersion, THEME_ID_UNKNOWN, defaultThemeId);
assertKeyboardThemePreference(sdkVersion, THEME_ID_ILLEGAL, defaultThemeId);
}
@@ -110,11 +110,11 @@
}
private void assertKeyboardThemePreferenceOnLxx(final int sdkVersion) {
- final int defaultThemeId = THEME_ID_LXX;
+ final int defaultThemeId = THEME_ID_LXX_DARK;
assertKeyboardThemePreference(sdkVersion, THEME_ID_NULL, defaultThemeId);
assertKeyboardThemePreference(sdkVersion, THEME_ID_ICS, THEME_ID_ICS);
assertKeyboardThemePreference(sdkVersion, THEME_ID_KLP, THEME_ID_KLP);
- assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX, THEME_ID_LXX);
+ assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK);
assertKeyboardThemePreference(sdkVersion, THEME_ID_UNKNOWN, defaultThemeId);
assertKeyboardThemePreference(sdkVersion, THEME_ID_ILLEGAL, defaultThemeId);
}
@@ -165,11 +165,11 @@
private void assertDefaultKeyboardThemeOnLxx(final int sdkVersion) {
// Forced to switch to LXX theme.
- assertDefaultKeyboardTheme(sdkVersion, THEME_ID_NULL, THEME_ID_LXX);
- assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ICS, THEME_ID_LXX);
- assertDefaultKeyboardTheme(sdkVersion, THEME_ID_KLP, THEME_ID_LXX);
- assertDefaultKeyboardTheme(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX);
- assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX);
+ assertDefaultKeyboardTheme(sdkVersion, THEME_ID_NULL, THEME_ID_LXX_DARK);
+ assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ICS, THEME_ID_LXX_DARK);
+ assertDefaultKeyboardTheme(sdkVersion, THEME_ID_KLP, THEME_ID_LXX_DARK);
+ assertDefaultKeyboardTheme(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK);
+ assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK);
}
public void testDefaultKeyboardThemeOnLxx() {
@@ -230,11 +230,11 @@
private void assertUpgradeKeyboardToLxxOnLxx(final int sdkVersion) {
// Forced to switch to LXX theme.
- assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_NULL, THEME_ID_LXX);
- assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ICS, THEME_ID_LXX);
- assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_KLP, THEME_ID_LXX);
- assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX);
- assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX);
+ assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_NULL, THEME_ID_LXX_DARK);
+ assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ICS, THEME_ID_LXX_DARK);
+ assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_KLP, THEME_ID_LXX_DARK);
+ assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK);
+ assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK);
}
// Upgrading keyboard on L.
@@ -293,11 +293,16 @@
private void assertUpgradePlatformToLxxFrom(final int oldSdkVersion) {
// Forced to switch to LXX theme.
final int newSdkVersion = VERSION_CODES_LXX;
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_LXX);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_LXX);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX_DARK);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_LXX_DARK);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_LXX_DARK);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK);
}
// Update platform from I,J, and K to L
@@ -314,10 +319,15 @@
public void testUpgradePlatformToLxxFromLxx() {
final int oldSdkVersion = VERSION_CODES_LXX;
final int newSdkVersion = VERSION_CODES_LXX;
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_ICS);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_KLP);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX);
- assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX_DARK);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_ICS);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_KLP);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK);
+ assertUpgradePlatformFromTo(
+ oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK);
}
}
diff --git a/tests/src/com/android/inputmethod/latin/DistracterFilterTest.java b/tests/src/com/android/inputmethod/latin/DistracterFilterTest.java
index d7b57ae..e98f9ea 100644
--- a/tests/src/com/android/inputmethod/latin/DistracterFilterTest.java
+++ b/tests/src/com/android/inputmethod/latin/DistracterFilterTest.java
@@ -36,50 +36,50 @@
}
public void testIsDistractorToWordsInDictionaries() {
- final String EMPTY_PREV_WORD = null;
+ final PrevWordsInfo EMPTY_PREV_WORDS_INFO = new PrevWordsInfo(null);
final Locale localeEnUs = new Locale("en", "US");
String typedWord = "alot";
// For this test case, we consider "alot" is a distracter to "a lot".
assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
typedWord = "mot";
// For this test case, we consider "mot" is a distracter to "not".
assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
typedWord = "wierd";
// For this test case, we consider "wierd" is a distracter to "weird".
assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
typedWord = "hoe";
// For this test case, we consider "hoe" is a distracter to "how".
assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
typedWord = "nit";
// For this test case, we consider "nit" is a distracter to "not".
assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
typedWord = "ill";
// For this test case, we consider "ill" is a distracter to "I'll".
assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
typedWord = "asdfd";
// For this test case, we consider "asdfd" is not a distracter to any word in dictionaries.
assertFalse(
mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
typedWord = "thank";
// For this test case, we consider "thank" is not a distracter to any other word
// in dictionaries.
assertFalse(
mDistracterFilter.isDistracterToWordsInDictionaries(
- EMPTY_PREV_WORD, typedWord, localeEnUs));
+ EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
}
}
diff --git a/tests/src/com/android/inputmethod/latin/WordComposerTests.java b/tests/src/com/android/inputmethod/latin/WordComposerTests.java
index d68bb5c..16e8b36 100644
--- a/tests/src/com/android/inputmethod/latin/WordComposerTests.java
+++ b/tests/src/com/android/inputmethod/latin/WordComposerTests.java
@@ -57,14 +57,14 @@
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(1));
assertFalse(wc.isCursorFrontOrMiddleOfComposingWord());
// Check the previous word is still there
- assertEquals(PREVWORD, wc.getPreviousWordForSuggestion());
+ assertEquals(PREVWORD, wc.getPrevWordsInfoForSuggestion().mPrevWord);
// Move the cursor past the end of the word
assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(1));
assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(15));
// Do what LatinIME does when the cursor is moved outside of the word,
// and check the behavior is correct.
wc.reset();
- assertNull(wc.getPreviousWordForSuggestion());
+ assertNull(wc.getPrevWordsInfoForSuggestion().mPrevWord);
// \uD861\uDED7 is 𨛗, a character outside the BMP
final String STR_WITH_SUPPLEMENTARY_CHAR = "abcde\uD861\uDED7fgh";
@@ -83,37 +83,37 @@
assertTrue(wc.isCursorFrontOrMiddleOfComposingWord());
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(1));
assertFalse(wc.isCursorFrontOrMiddleOfComposingWord());
- assertNull(wc.getPreviousWordForSuggestion());
+ assertNull(wc.getPrevWordsInfoForSuggestion().mPrevWord);
wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR,
STR_WITHIN_BMP);
wc.setCursorPositionWithinWord(3);
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(7));
- assertEquals(STR_WITHIN_BMP, wc.getPreviousWordForSuggestion());
+ assertEquals(STR_WITHIN_BMP, wc.getPrevWordsInfoForSuggestion().mPrevWord);
wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR,
STR_WITH_SUPPLEMENTARY_CHAR);
wc.setCursorPositionWithinWord(3);
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(7));
- assertEquals(STR_WITH_SUPPLEMENTARY_CHAR, wc.getPreviousWordForSuggestion());
+ assertEquals(STR_WITH_SUPPLEMENTARY_CHAR, wc.getPrevWordsInfoForSuggestion().mPrevWord);
wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR,
STR_WITHIN_BMP);
wc.setCursorPositionWithinWord(3);
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(-3));
assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(-1));
- assertEquals(STR_WITHIN_BMP, wc.getPreviousWordForSuggestion());
+ assertEquals(STR_WITHIN_BMP, wc.getPrevWordsInfoForSuggestion().mPrevWord);
wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR,
null /* previousWord */);
wc.setCursorPositionWithinWord(3);
assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(-9));
- assertNull(wc.getPreviousWordForSuggestion());
+ assertNull(wc.getPrevWordsInfoForSuggestion().mPrevWord);
wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR,
STR_WITH_SUPPLEMENTARY_CHAR);
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(-10));
- assertEquals(STR_WITH_SUPPLEMENTARY_CHAR, wc.getPreviousWordForSuggestion());
+ assertEquals(STR_WITH_SUPPLEMENTARY_CHAR, wc.getPrevWordsInfoForSuggestion().mPrevWord);
wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR,
null /* previousWord */);
diff --git a/tools/dicttool/Android.mk b/tools/dicttool/Android.mk
index e12d7e0..10104cf 100644
--- a/tools/dicttool/Android.mk
+++ b/tools/dicttool/Android.mk
@@ -44,6 +44,7 @@
latin/InputPointers.java \
latin/LastComposedWord.java \
latin/LatinImeLogger.java \
+ latin/PrevWordsInfo.java \
latin/SuggestedWords.java \
latin/WordComposer.java \
latin/settings/NativeSuggestOptions.java \