summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabrice Di Meglio <fdimeglio@google.com>2013-04-03 20:59:09 -0700
committerFabrice Di Meglio <fdimeglio@google.com>2013-04-05 14:08:24 -0700
commit9f0c1621718b382531cbebfe38907e6d3db6ceae (patch)
tree619a0de683bec4fda761cc3515f28d05d8bda435
parente059276ccf87f59c366521bafb9012b2395f636b (diff)
downloadandroid_packages_apps_ContactsCommon-9f0c1621718b382531cbebfe38907e6d3db6ceae.tar.gz
android_packages_apps_ContactsCommon-9f0c1621718b382531cbebfe38907e6d3db6ceae.tar.bz2
android_packages_apps_ContactsCommon-9f0c1621718b382531cbebfe38907e6d3db6ceae.zip
Fix for bug #8146846 Phone App should be mirrored for RTL languages
- add start/end aside left/right properties - make default PhotoPosition depends on Locale layout direction - add mirrored version of Drawables - use android:textAlignment="viewStart" when needed on TextView Change-Id: I0bf2fb83d94a3748d26d1825387b9b16830830a5
-rw-r--r--res/drawable-ldrtl-hdpi/badge_action_call.pngbin0 -> 5787 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/badge_action_sms.pngbin0 -> 4530 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/ic_add_contact_holo_dark.pngbin0 -> 6014 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/ic_contact_picture_180_holo_dark.pngbin0 -> 8490 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/ic_contact_picture_180_holo_light.pngbin0 -> 10370 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/ic_contact_picture_holo_dark.pngbin0 -> 5326 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/ic_contact_picture_holo_light.pngbin0 -> 5636 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/ic_contacts_holo_dark.pngbin0 -> 5773 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/ic_menu_settings_holo_light.pngbin0 -> 5756 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/ic_text_holo_dark.pngbin0 -> 4654 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/ic_text_holo_light.pngbin0 -> 4845 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/list_background_holo.9.pngbin0 -> 219 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/list_focused_holo.9.pngbin0 -> 234 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/list_section_divider_holo_custom.9.pngbin0 -> 163 bytes
-rw-r--r--res/drawable-ldrtl-hdpi/list_title_holo.9.pngbin0 -> 258 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/badge_action_call.pngbin0 -> 4990 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/badge_action_sms.pngbin0 -> 4387 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/ic_add_contact_holo_dark.pngbin0 -> 5309 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/ic_contact_picture_180_holo_dark.pngbin0 -> 6712 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/ic_contact_picture_180_holo_light.pngbin0 -> 7911 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/ic_contact_picture_holo_dark.pngbin0 -> 4850 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/ic_contact_picture_holo_light.pngbin0 -> 5049 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/ic_contacts_holo_dark.pngbin0 -> 5123 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/ic_menu_settings_holo_light.pngbin0 -> 5091 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/ic_text_holo_dark.pngbin0 -> 4474 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/ic_text_holo_light.pngbin0 -> 4626 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/list_background_holo.9.pngbin0 -> 178 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/list_focused_holo.9.pngbin0 -> 234 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/list_section_divider_holo_custom.9.pngbin0 -> 150 bytes
-rw-r--r--res/drawable-ldrtl-mdpi/list_title_holo.9.pngbin0 -> 186 bytes
-rw-r--r--res/drawable-ldrtl-sw580dp-hdpi/list_activated_holo.9.pngbin0 -> 1666 bytes
-rw-r--r--res/drawable-ldrtl-sw580dp-mdpi/list_activated_holo.9.pngbin0 -> 1034 bytes
-rw-r--r--res/drawable-ldrtl-sw580dp-xhdpi/list_activated_holo.9.pngbin0 -> 2486 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/badge_action_call.pngbin0 -> 6779 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/badge_action_sms.pngbin0 -> 4818 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/ic_add_contact_holo_dark.pngbin0 -> 6949 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/ic_contact_picture_180_holo_dark.pngbin0 -> 10879 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/ic_contact_picture_180_holo_light.pngbin0 -> 12138 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/ic_contact_picture_holo_dark.pngbin0 -> 5859 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/ic_contact_picture_holo_light.pngbin0 -> 6997 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/ic_contacts_holo_dark.pngbin0 -> 6637 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/ic_menu_settings_holo_light.pngbin0 -> 6481 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/ic_text_holo_dark.pngbin0 -> 4768 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/ic_text_holo_light.pngbin0 -> 5030 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/list_background_holo.9.pngbin0 -> 243 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/list_focused_holo.9.pngbin0 -> 234 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/list_section_divider_holo_custom.9.pngbin0 -> 170 bytes
-rw-r--r--res/drawable-ldrtl-xhdpi/list_title_holo.9.pngbin0 -> 255 bytes
-rw-r--r--res/layout/account_filter_header.xml5
-rw-r--r--res/layout/account_selector_list_item.xml2
-rw-r--r--res/layout/contact_list_content.xml2
-rw-r--r--res/layout/contact_list_filter.xml6
-rw-r--r--res/layout/contact_list_filter_custom.xml4
-rw-r--r--res/layout/contact_list_filter_item.xml5
-rw-r--r--res/layout/contact_tile_frequent.xml9
-rw-r--r--res/layout/contact_tile_frequent_phone.xml15
-rw-r--r--res/layout/contact_tile_phone_starred.xml12
-rw-r--r--res/layout/contact_tile_starred.xml8
-rw-r--r--res/layout/contact_tile_starred_quick_contact.xml8
-rw-r--r--res/layout/custom_contact_list_filter_account.xml6
-rw-r--r--res/layout/custom_contact_list_filter_group.xml5
-rw-r--r--res/layout/directory_header.xml13
-rw-r--r--res/layout/list_separator.xml6
-rw-r--r--res/layout/select_dialog_item.xml2
-rw-r--r--res/values/ids.xml6
-rw-r--r--res/values/styles.xml1
-rw-r--r--src/com/android/contacts/common/list/ContactEntryListFragment.java17
-rw-r--r--src/com/android/contacts/common/list/ContactListItemView.java109
-rw-r--r--src/com/android/contacts/common/list/ContactListPinnedHeaderView.java40
-rw-r--r--src/com/android/contacts/common/list/ContactTileAdapter.java2
-rw-r--r--src/com/android/contacts/common/list/PhoneNumberPickerFragment.java2
-rw-r--r--src/com/android/contacts/common/list/PinnedHeaderListView.java11
72 files changed, 232 insertions, 64 deletions
diff --git a/res/drawable-ldrtl-hdpi/badge_action_call.png b/res/drawable-ldrtl-hdpi/badge_action_call.png
new file mode 100644
index 00000000..05a77f63
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/badge_action_call.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/badge_action_sms.png b/res/drawable-ldrtl-hdpi/badge_action_sms.png
new file mode 100644
index 00000000..7c6e4459
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/badge_action_sms.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_add_contact_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_add_contact_holo_dark.png
new file mode 100644
index 00000000..f08df0f2
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_add_contact_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_contact_picture_180_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_contact_picture_180_holo_dark.png
new file mode 100644
index 00000000..95b4b4b3
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_contact_picture_180_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_contact_picture_180_holo_light.png b/res/drawable-ldrtl-hdpi/ic_contact_picture_180_holo_light.png
new file mode 100644
index 00000000..b166a7f7
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_contact_picture_180_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_contact_picture_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_contact_picture_holo_dark.png
new file mode 100644
index 00000000..a62c569b
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_contact_picture_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_contact_picture_holo_light.png b/res/drawable-ldrtl-hdpi/ic_contact_picture_holo_light.png
new file mode 100644
index 00000000..659d7231
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_contact_picture_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_contacts_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_contacts_holo_dark.png
new file mode 100644
index 00000000..76a96bed
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_contacts_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_menu_settings_holo_light.png b/res/drawable-ldrtl-hdpi/ic_menu_settings_holo_light.png
new file mode 100644
index 00000000..c3d86cad
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_menu_settings_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_text_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_text_holo_dark.png
new file mode 100644
index 00000000..667e961e
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_text_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_text_holo_light.png b/res/drawable-ldrtl-hdpi/ic_text_holo_light.png
new file mode 100644
index 00000000..0f2e9f4b
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/ic_text_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/list_background_holo.9.png b/res/drawable-ldrtl-hdpi/list_background_holo.9.png
new file mode 100644
index 00000000..0d80482a
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/list_background_holo.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/list_focused_holo.9.png b/res/drawable-ldrtl-hdpi/list_focused_holo.9.png
new file mode 100644
index 00000000..4139942d
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/list_focused_holo.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/list_section_divider_holo_custom.9.png b/res/drawable-ldrtl-hdpi/list_section_divider_holo_custom.9.png
new file mode 100644
index 00000000..db386b4a
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/list_section_divider_holo_custom.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/list_title_holo.9.png b/res/drawable-ldrtl-hdpi/list_title_holo.9.png
new file mode 100644
index 00000000..5ec4c96a
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/list_title_holo.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/badge_action_call.png b/res/drawable-ldrtl-mdpi/badge_action_call.png
new file mode 100644
index 00000000..cdbff01a
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/badge_action_call.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/badge_action_sms.png b/res/drawable-ldrtl-mdpi/badge_action_sms.png
new file mode 100644
index 00000000..8ab36ba7
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/badge_action_sms.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_add_contact_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_add_contact_holo_dark.png
new file mode 100644
index 00000000..ab5e9da6
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_add_contact_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_contact_picture_180_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_contact_picture_180_holo_dark.png
new file mode 100644
index 00000000..01d70def
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_contact_picture_180_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_contact_picture_180_holo_light.png b/res/drawable-ldrtl-mdpi/ic_contact_picture_180_holo_light.png
new file mode 100644
index 00000000..a759f36d
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_contact_picture_180_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_contact_picture_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_contact_picture_holo_dark.png
new file mode 100644
index 00000000..644158ed
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_contact_picture_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_contact_picture_holo_light.png b/res/drawable-ldrtl-mdpi/ic_contact_picture_holo_light.png
new file mode 100644
index 00000000..b39b768b
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_contact_picture_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_contacts_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_contacts_holo_dark.png
new file mode 100644
index 00000000..5af33b8b
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_contacts_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_menu_settings_holo_light.png b/res/drawable-ldrtl-mdpi/ic_menu_settings_holo_light.png
new file mode 100644
index 00000000..ac172b24
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_menu_settings_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_text_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_text_holo_dark.png
new file mode 100644
index 00000000..4429d023
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_text_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_text_holo_light.png b/res/drawable-ldrtl-mdpi/ic_text_holo_light.png
new file mode 100644
index 00000000..33e4ba51
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/ic_text_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/list_background_holo.9.png b/res/drawable-ldrtl-mdpi/list_background_holo.9.png
new file mode 100644
index 00000000..d86d6116
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/list_background_holo.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/list_focused_holo.9.png b/res/drawable-ldrtl-mdpi/list_focused_holo.9.png
new file mode 100644
index 00000000..4139942d
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/list_focused_holo.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/list_section_divider_holo_custom.9.png b/res/drawable-ldrtl-mdpi/list_section_divider_holo_custom.9.png
new file mode 100644
index 00000000..9236a42d
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/list_section_divider_holo_custom.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/list_title_holo.9.png b/res/drawable-ldrtl-mdpi/list_title_holo.9.png
new file mode 100644
index 00000000..013d5e71
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/list_title_holo.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-sw580dp-hdpi/list_activated_holo.9.png b/res/drawable-ldrtl-sw580dp-hdpi/list_activated_holo.9.png
new file mode 100644
index 00000000..947f03ce
--- /dev/null
+++ b/res/drawable-ldrtl-sw580dp-hdpi/list_activated_holo.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-sw580dp-mdpi/list_activated_holo.9.png b/res/drawable-ldrtl-sw580dp-mdpi/list_activated_holo.9.png
new file mode 100644
index 00000000..6d09d727
--- /dev/null
+++ b/res/drawable-ldrtl-sw580dp-mdpi/list_activated_holo.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-sw580dp-xhdpi/list_activated_holo.9.png b/res/drawable-ldrtl-sw580dp-xhdpi/list_activated_holo.9.png
new file mode 100644
index 00000000..63c7456f
--- /dev/null
+++ b/res/drawable-ldrtl-sw580dp-xhdpi/list_activated_holo.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/badge_action_call.png b/res/drawable-ldrtl-xhdpi/badge_action_call.png
new file mode 100644
index 00000000..b8e1a9cd
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/badge_action_call.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/badge_action_sms.png b/res/drawable-ldrtl-xhdpi/badge_action_sms.png
new file mode 100644
index 00000000..a8dcf8be
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/badge_action_sms.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_add_contact_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_add_contact_holo_dark.png
new file mode 100644
index 00000000..fced256e
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_add_contact_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_contact_picture_180_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_contact_picture_180_holo_dark.png
new file mode 100644
index 00000000..a9b1ce7b
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_contact_picture_180_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_contact_picture_180_holo_light.png b/res/drawable-ldrtl-xhdpi/ic_contact_picture_180_holo_light.png
new file mode 100644
index 00000000..5bc334a1
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_contact_picture_180_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_contact_picture_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_contact_picture_holo_dark.png
new file mode 100644
index 00000000..9478e7b0
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_contact_picture_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_contact_picture_holo_light.png b/res/drawable-ldrtl-xhdpi/ic_contact_picture_holo_light.png
new file mode 100644
index 00000000..9ca02f39
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_contact_picture_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_contacts_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_contacts_holo_dark.png
new file mode 100644
index 00000000..a29f9898
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_contacts_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_menu_settings_holo_light.png b/res/drawable-ldrtl-xhdpi/ic_menu_settings_holo_light.png
new file mode 100644
index 00000000..2b7ebf70
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_menu_settings_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_text_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_text_holo_dark.png
new file mode 100644
index 00000000..2a28bab3
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_text_holo_dark.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_text_holo_light.png b/res/drawable-ldrtl-xhdpi/ic_text_holo_light.png
new file mode 100644
index 00000000..78df192b
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/ic_text_holo_light.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/list_background_holo.9.png b/res/drawable-ldrtl-xhdpi/list_background_holo.9.png
new file mode 100644
index 00000000..f709f2ce
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/list_background_holo.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/list_focused_holo.9.png b/res/drawable-ldrtl-xhdpi/list_focused_holo.9.png
new file mode 100644
index 00000000..4139942d
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/list_focused_holo.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/list_section_divider_holo_custom.9.png b/res/drawable-ldrtl-xhdpi/list_section_divider_holo_custom.9.png
new file mode 100644
index 00000000..cd7bc0d7
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/list_section_divider_holo_custom.9.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/list_title_holo.9.png b/res/drawable-ldrtl-xhdpi/list_title_holo.9.png
new file mode 100644
index 00000000..cb801ac1
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/list_title_holo.9.png
Binary files differ
diff --git a/res/layout/account_filter_header.xml b/res/layout/account_filter_header.xml
index 0ffb7e1c..268a17e8 100644
--- a/res/layout/account_filter_header.xml
+++ b/res/layout/account_filter_header.xml
@@ -26,10 +26,13 @@
android:paddingTop="@dimen/list_header_extra_top_padding"
android:layout_marginLeft="@dimen/contact_browser_list_header_left_margin"
android:layout_marginRight="@dimen/contact_browser_list_header_right_margin"
+ android:layout_marginStart="@dimen/contact_browser_list_header_left_margin"
+ android:layout_marginEnd="@dimen/contact_browser_list_header_right_margin"
android:background="?android:attr/selectableItemBackground"
android:visibility="gone">
<TextView
android:id="@+id/account_filter_header"
style="@style/ContactListSeparatorTextViewStyle"
- android:paddingLeft="@dimen/contact_browser_list_item_text_indent" />
+ android:paddingLeft="@dimen/contact_browser_list_item_text_indent"
+ android:paddingStart="@dimen/contact_browser_list_item_text_indent" />
</LinearLayout>
diff --git a/res/layout/account_selector_list_item.xml b/res/layout/account_selector_list_item.xml
index 4cba3e96..076cc88d 100644
--- a/res/layout/account_selector_list_item.xml
+++ b/res/layout/account_selector_list_item.xml
@@ -35,6 +35,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8dip"
+ android:layout_marginEnd="8dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:singleLine="true"
android:ellipsize="end"/>
@@ -43,6 +44,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8dip"
+ android:layout_marginEnd="8dip"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondary"
android:singleLine="true"
diff --git a/res/layout/contact_list_content.xml b/res/layout/contact_list_content.xml
index 94681d69..3a8ad7d2 100644
--- a/res/layout/contact_list_content.xml
+++ b/res/layout/contact_list_content.xml
@@ -44,6 +44,8 @@
android:layout_height="match_parent"
android:layout_marginLeft="?attr/contact_browser_list_padding_left"
android:layout_marginRight="?attr/contact_browser_list_padding_right"
+ android:layout_marginStart="?attr/contact_browser_list_padding_left"
+ android:layout_marginEnd="?attr/contact_browser_list_padding_right"
android:fastScrollEnabled="true"
android:fadingEdge="none" />
<ProgressBar
diff --git a/res/layout/contact_list_filter.xml b/res/layout/contact_list_filter.xml
index f47d309f..d419c7e8 100644
--- a/res/layout/contact_list_filter.xml
+++ b/res/layout/contact_list_filter.xml
@@ -28,12 +28,16 @@
android:layout_height="0dip"
android:layout_weight="1"
android:layout_marginLeft="@dimen/contact_filter_left_margin"
- android:layout_marginRight="@dimen/contact_filter_right_margin" />
+ android:layout_marginRight="@dimen/contact_filter_right_margin"
+ android:layout_marginStart="@dimen/contact_filter_left_margin"
+ android:layout_marginEnd="@dimen/contact_filter_right_margin" />
<View
android:layout_width="match_parent"
android:layout_height="1dip"
android:layout_marginLeft="16dip"
android:layout_marginRight="16dip"
+ android:layout_marginStart="16dip"
+ android:layout_marginEnd="16dip"
android:background="?android:attr/dividerHorizontal" />
</LinearLayout>
diff --git a/res/layout/contact_list_filter_custom.xml b/res/layout/contact_list_filter_custom.xml
index 78318bca..b6d9229f 100644
--- a/res/layout/contact_list_filter_custom.xml
+++ b/res/layout/contact_list_filter_custom.xml
@@ -27,6 +27,8 @@
android:layout_weight="1"
android:layout_marginLeft="@dimen/contact_filter_left_margin"
android:layout_marginRight="@dimen/contact_filter_right_margin"
+ android:layout_marginStart="@dimen/contact_filter_left_margin"
+ android:layout_marginEnd="@dimen/contact_filter_right_margin"
android:overScrollMode="always" />
<View
@@ -34,6 +36,8 @@
android:layout_height="1dip"
android:layout_marginLeft="16dip"
android:layout_marginRight="16dip"
+ android:layout_marginStart="16dip"
+ android:layout_marginEnd="16dip"
android:background="?android:attr/dividerHorizontal" />
<LinearLayout
diff --git a/res/layout/contact_list_filter_item.xml b/res/layout/contact_list_filter_item.xml
index ec6a45ed..09bbe551 100644
--- a/res/layout/contact_list_filter_item.xml
+++ b/res/layout/contact_list_filter_item.xml
@@ -34,7 +34,8 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
- android:layout_marginLeft="8dip">
+ android:layout_marginLeft="8dip"
+ android:layout_marginStart="8dip">
<TextView
android:id="@+id/accountType"
@@ -61,6 +62,6 @@
android:layout_marginTop="1dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="right|center_vertical" />
+ android:layout_gravity="end|center_vertical" />
</view>
diff --git a/res/layout/contact_tile_frequent.xml b/res/layout/contact_tile_frequent.xml
index 03559297..404b2feb 100644
--- a/res/layout/contact_tile_frequent.xml
+++ b/res/layout/contact_tile_frequent.xml
@@ -38,8 +38,10 @@
android:orientation="vertical"
android:layout_alignParentBottom="true"
android:gravity="center_vertical"
- android:paddingEnd="80dip"
- android:paddingStart="8dip">
+ android:paddingLeft="8dip"
+ android:paddingRight="80dip"
+ android:paddingStart="8dip"
+ android:paddingEnd="80dip">
<TextView
android:id="@+id/contact_tile_name"
@@ -50,7 +52,8 @@
android:singleLine="true"
android:fadingEdge="horizontal"
android:fadingEdgeLength="3dip"
- android:ellipsize="marquee" />
+ android:ellipsize="marquee"
+ android:textAlignment="viewStart" />
<TextView
android:id="@+id/contact_tile_status"
diff --git a/res/layout/contact_tile_frequent_phone.xml b/res/layout/contact_tile_frequent_phone.xml
index 3a84b5a7..f87dff72 100644
--- a/res/layout/contact_tile_frequent_phone.xml
+++ b/res/layout/contact_tile_frequent_phone.xml
@@ -32,6 +32,7 @@
android:layout_width="64dip"
android:layout_height="64dip"
android:layout_alignParentLeft="true"
+ android:layout_alignParentStart="true"
android:nextFocusRight="@id/contact_tile_frequent_phone"
android:scaleType="centerCrop"
android:focusable="true" />
@@ -41,13 +42,16 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="8dip"
+ android:layout_marginStart="8dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_marginTop="8dip"
android:layout_toRightOf="@id/contact_tile_quick"
+ android:layout_toEndOf="@id/contact_tile_quick"
android:singleLine="true"
android:fadingEdge="horizontal"
android:fadingEdgeLength="3dip"
- android:ellipsize="marquee" />
+ android:ellipsize="marquee"
+ android:textAlignment="viewStart" />
<LinearLayout
android:orientation="horizontal"
@@ -55,6 +59,7 @@
android:layout_height="wrap_content"
android:layout_below="@id/contact_tile_name"
android:layout_toRightOf="@id/contact_tile_quick"
+ android:layout_toEndOf="@id/contact_tile_quick"
android:gravity="center_vertical">
<TextView
@@ -66,8 +71,11 @@
android:ellipsize="marquee"
android:textColor="@color/dialtacts_secondary_text_color"
android:layout_marginLeft="8dip"
+ android:layout_marginStart="8dip"
android:singleLine="true"
- android:layout_gravity="bottom" />
+ android:layout_gravity="bottom"
+ android:textDirection="ltr"
+ android:textAlignment="viewStart" />
<TextView
android:id="@+id/contact_tile_phone_type"
@@ -80,7 +88,8 @@
android:textAllCaps="true"
android:textColor="@color/dialtacts_secondary_text_color"
android:layout_marginLeft="8dip"
- android:gravity="right"
+ android:layout_marginStart="8dip"
+ android:gravity="end"
android:layout_gravity="bottom" />
</LinearLayout>
diff --git a/res/layout/contact_tile_phone_starred.xml b/res/layout/contact_tile_phone_starred.xml
index 9959c82c..e1e4970a 100644
--- a/res/layout/contact_tile_phone_starred.xml
+++ b/res/layout/contact_tile_phone_starred.xml
@@ -18,6 +18,7 @@
android:background="@null"
android:paddingBottom="1dip"
android:paddingRight="1dip"
+ android:paddingEnd="1dip"
class="com.android.contacts.common.list.ContactTilePhoneStarredView" >
<RelativeLayout
@@ -45,7 +46,11 @@
android:layout_alignParentBottom="true"
android:paddingLeft="8dip"
android:paddingRight="47dip"
- android:drawableRight="@drawable/ic_divider_dashed_holo_dark" />
+ android:paddingStart="8dip"
+ android:paddingEnd="47dip"
+ android:drawableRight="@drawable/ic_divider_dashed_holo_dark"
+ android:drawableEnd="@drawable/ic_divider_dashed_holo_dark"
+ android:textAlignment="viewStart" />
<View
android:id="@+id/contact_tile_push_state"
@@ -61,10 +66,13 @@
android:background="?android:attr/selectableItemBackground"
android:layout_height="@dimen/contact_tile_shadowbox_height"
android:layout_width="48dip"
- android:paddingRight="8dip"
android:paddingLeft="8dip"
+ android:paddingRight="8dip"
+ android:paddingStart="8dip"
+ android:paddingEnd="8dip"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
+ android:layout_alignParentEnd="true"
android:contentDescription="@string/description_view_contact_detail" />
</RelativeLayout>
diff --git a/res/layout/contact_tile_starred.xml b/res/layout/contact_tile_starred.xml
index 06852a6e..e3637472 100644
--- a/res/layout/contact_tile_starred.xml
+++ b/res/layout/contact_tile_starred.xml
@@ -18,6 +18,7 @@
android:background="@null"
android:paddingBottom="1dip"
android:paddingRight="1dip"
+ android:paddingEnd="1dip"
class="com.android.contacts.common.list.ContactTileStarredView" >
<RelativeLayout
@@ -38,8 +39,10 @@
android:background="@color/contact_tile_shadow_box_color"
android:layout_alignParentBottom="true"
android:gravity="center_vertical"
+ android:paddingLeft="8dip"
android:paddingRight="8dip"
- android:paddingLeft="8dip">
+ android:paddingStart="8dip"
+ android:paddingEnd="8dip">
<TextView
android:id="@+id/contact_tile_name"
@@ -50,7 +53,8 @@
android:singleLine="true"
android:fadingEdge="horizontal"
android:fadingEdgeLength="3dip"
- android:ellipsize="marquee" />
+ android:ellipsize="marquee"
+ android:textAlignment="viewStart" />
<TextView
android:id="@+id/contact_tile_status"
diff --git a/res/layout/contact_tile_starred_quick_contact.xml b/res/layout/contact_tile_starred_quick_contact.xml
index 87a6e654..ecbe5839 100644
--- a/res/layout/contact_tile_starred_quick_contact.xml
+++ b/res/layout/contact_tile_starred_quick_contact.xml
@@ -17,6 +17,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingBottom="1dip"
android:paddingRight="1dip"
+ android:paddingEnd="1dip"
android:background="@null"
class="com.android.contacts.common.list.ContactTileStarredView" >
@@ -37,8 +38,10 @@
android:background="@color/contact_tile_shadow_box_color"
android:layout_alignParentBottom="true"
android:gravity="center_vertical"
+ android:paddingLeft="8dip"
android:paddingRight="8dip"
- android:paddingLeft="8dip">
+ android:paddingStart="8dip"
+ android:paddingEnd="8dip">
<TextView
android:id="@+id/contact_tile_name"
@@ -49,7 +52,8 @@
android:singleLine="true"
android:fadingEdge="horizontal"
android:fadingEdgeLength="3dip"
- android:ellipsize="marquee" />
+ android:ellipsize="marquee"
+ android:textAlignment="viewStart" />
<TextView
android:id="@+id/contact_tile_status"
diff --git a/res/layout/custom_contact_list_filter_account.xml b/res/layout/custom_contact_list_filter_account.xml
index 6b25fed9..b1f3f2b3 100644
--- a/res/layout/custom_contact_list_filter_account.xml
+++ b/res/layout/custom_contact_list_filter_account.xml
@@ -20,12 +20,15 @@
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
- android:paddingRight="?android:attr/scrollbarSize">
+ android:paddingRight="?android:attr/scrollbarSize"
+ android:paddingStart="?android:attr/expandableListPreferredItemPaddingLeft"
+ android:paddingEnd="?android:attr/scrollbarSize">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="6dip"
+ android:layout_marginEnd="6dip"
android:layout_marginTop="6dip"
android:layout_marginBottom="6dip"
android:layout_weight="1"
@@ -46,6 +49,7 @@
android:layout_height="wrap_content"
android:layout_below="@android:id/text1"
android:layout_alignLeft="@android:id/text1"
+ android:layout_alignStart="@android:id/text1"
android:maxLines="1"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorTertiary"
diff --git a/res/layout/custom_contact_list_filter_group.xml b/res/layout/custom_contact_list_filter_group.xml
index a9de606c..bd8c6049 100644
--- a/res/layout/custom_contact_list_filter_group.xml
+++ b/res/layout/custom_contact_list_filter_group.xml
@@ -21,12 +21,15 @@
android:gravity="center_vertical"
android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
android:paddingRight="?android:attr/scrollbarSize"
+ android:paddingStart="?android:attr/expandableListPreferredItemPaddingLeft"
+ android:paddingEnd="?android:attr/scrollbarSize"
>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="6dip"
+ android:layout_marginEnd="6dip"
android:layout_marginTop="6dip"
android:layout_marginBottom="6dip"
android:layout_weight="1"
@@ -49,6 +52,7 @@
android:layout_height="wrap_content"
android:layout_below="@android:id/text1"
android:layout_alignLeft="@android:id/text1"
+ android:layout_alignStart="@android:id/text1"
android:maxLines="2"
android:textAppearance="?android:attr/textAppearanceSmall"
android:duplicateParentState="true"
@@ -61,6 +65,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="4dip"
+ android:layout_marginEnd="4dip"
android:focusable="false"
android:clickable="false"
android:gravity="center_vertical"
diff --git a/res/layout/directory_header.xml b/res/layout/directory_header.xml
index fcd255ef..51b9d057 100644
--- a/res/layout/directory_header.xml
+++ b/res/layout/directory_header.xml
@@ -21,6 +21,8 @@
android:id="@+id/directory_header"
android:paddingLeft="?attr/list_item_padding_left"
android:paddingRight="?attr/list_item_padding_right"
+ android:paddingStart="?attr/list_item_padding_left"
+ android:paddingEnd="?attr/list_item_padding_right"
android:minHeight="@dimen/list_section_divider_min_height"
android:layout_marginTop="@dimen/list_header_extra_top_padding"
android:layout_width="match_parent"
@@ -37,29 +39,34 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dip"
+ android:layout_marginStart="8dip"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/people_app_theme_color"
android:singleLine="true"
android:textStyle="bold"
- android:textAllCaps="true" />
+ android:textAllCaps="true"
+ android:textAlignment="viewStart" />
<TextView
android:id="@+id/display_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dip"
android:layout_marginRight="8dip"
+ android:layout_marginStart="8dip"
+ android:layout_marginEnd="8dip"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/people_app_theme_color"
android:singleLine="true"
android:textStyle="bold"
- android:textAllCaps="true" />
+ android:textAllCaps="true"
+ android:textAlignment="viewStart" />
<TextView
android:id="@+id/count"
android:paddingTop="1dip"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:gravity="right"
+ android:gravity="end"
android:singleLine="true"
android:textSize="12sp"
android:textColor="@color/contact_count_text_color" />
diff --git a/res/layout/list_separator.xml b/res/layout/list_separator.xml
index d94e18c4..4553d48b 100644
--- a/res/layout/list_separator.xml
+++ b/res/layout/list_separator.xml
@@ -20,10 +20,14 @@
android:layout_height="wrap_content"
android:paddingLeft="16dip"
android:paddingRight="16dip"
+ android:paddingStart="16dip"
+ android:paddingEnd="16dip"
android:focusable="false">
<TextView
android:id="@+id/title"
style="@style/ContactListSeparatorTextViewStyle"
android:paddingLeft="8dip"
- android:paddingRight="8dip" />
+ android:paddingRight="8dip"
+ android:paddingStart="8dip"
+ android:paddingEnd="8dip" />
</FrameLayout>
diff --git a/res/layout/select_dialog_item.xml b/res/layout/select_dialog_item.xml
index d49ae10c..de495f65 100644
--- a/res/layout/select_dialog_item.xml
+++ b/res/layout/select_dialog_item.xml
@@ -29,5 +29,7 @@
android:gravity="center_vertical"
android:paddingLeft="14dip"
android:paddingRight="15dip"
+ android:paddingStart="14dip"
+ android:paddingEnd="15dip"
android:ellipsize="marquee"
/>
diff --git a/res/values/ids.xml b/res/values/ids.xml
index 058020de..9a731952 100644
--- a/res/values/ids.xml
+++ b/res/values/ids.xml
@@ -34,4 +34,10 @@
<item type="id" name="dialog_export_confirmation"/>
<item type="id" name="dialog_exporting_vcard"/>
<item type="id" name="dialog_fail_to_export_with_reason"/>
+
+ <!-- For Debug Purpose -->
+ <item type="id" name="cliv_name_textview"/>
+ <item type="id" name="cliv_phoneticname_textview"/>
+ <item type="id" name="cliv_label_textview"/>
+ <item type="id" name="cliv_data_view"/>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 77831b24..f47940bc 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -36,6 +36,7 @@ background and text color. See also android:style/Widget.Holo.TextView.ListSepar
<item name="android:textColor">@color/people_app_theme_color</item>
<item name="android:gravity">center_vertical</item>
<item name="android:paddingLeft">8dip</item>
+ <item name="android:paddingStart">8dip</item>
<item name="android:ellipsize">end</item>
<item name="android:singleLine">true</item>
<item name="android:textAllCaps">true</item>
diff --git a/src/com/android/contacts/common/list/ContactEntryListFragment.java b/src/com/android/contacts/common/list/ContactEntryListFragment.java
index a6692b8d..a8066b81 100644
--- a/src/com/android/contacts/common/list/ContactEntryListFragment.java
+++ b/src/com/android/contacts/common/list/ContactEntryListFragment.java
@@ -49,6 +49,8 @@ import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.R;
import com.android.contacts.common.preference.ContactsPreferences;
+import java.util.Locale;
+
/**
* Common base class for various contact-related list fragments.
*/
@@ -93,7 +95,7 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
private boolean mIncludeProfile;
private boolean mSearchMode;
private boolean mVisibleScrollbarEnabled;
- private int mVerticalScrollbarPosition = View.SCROLLBAR_POSITION_RIGHT;
+ private int mVerticalScrollbarPosition = getDefaultVerticalScrollbarPosition();
private String mQueryString;
private int mDirectorySearchMode = DirectoryListLoader.SEARCH_MODE_NONE;
private boolean mSelectionVisible;
@@ -147,6 +149,7 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
}
}
};
+ private int defaultVerticalScrollbarPosition;
protected abstract View inflateView(LayoutInflater inflater, ViewGroup container);
protected abstract T createListAdapter();
@@ -852,4 +855,16 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
reloadData();
}
};
+
+ private int getDefaultVerticalScrollbarPosition() {
+ final Locale locale = Locale.getDefault();
+ final int layoutDirection = TextUtils.getLayoutDirectionFromLocale(locale);
+ switch (layoutDirection) {
+ case View.LAYOUT_DIRECTION_RTL:
+ return View.SCROLLBAR_POSITION_LEFT;
+ case View.LAYOUT_DIRECTION_LTR:
+ default:
+ return View.SCROLLBAR_POSITION_RIGHT;
+ }
+ }
}
diff --git a/src/com/android/contacts/common/list/ContactListItemView.java b/src/com/android/contacts/common/list/ContactListItemView.java
index 67d80302..c65a766d 100644
--- a/src/com/android/contacts/common/list/ContactListItemView.java
+++ b/src/com/android/contacts/common/list/ContactListItemView.java
@@ -53,6 +53,7 @@ import com.google.common.collect.Lists;
import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -111,13 +112,27 @@ public class ContactListItemView extends ViewGroup
/**
* Where to put contact photo. This affects the other Views' layout or look-and-feel.
+ *
+ * TODO: replace enum with int constants
*/
public enum PhotoPosition {
LEFT,
RIGHT
}
- public static final PhotoPosition DEFAULT_PHOTO_POSITION = PhotoPosition.RIGHT;
- private PhotoPosition mPhotoPosition = DEFAULT_PHOTO_POSITION;
+
+ static public final PhotoPosition getDefaultPhotoPosition(boolean opposite) {
+ final Locale locale = Locale.getDefault();
+ final int layoutDirection = TextUtils.getLayoutDirectionFromLocale(locale);
+ switch (layoutDirection) {
+ case View.LAYOUT_DIRECTION_RTL:
+ return (opposite ? PhotoPosition.RIGHT : PhotoPosition.LEFT);
+ case View.LAYOUT_DIRECTION_LTR:
+ default:
+ return (opposite ? PhotoPosition.LEFT : PhotoPosition.RIGHT);
+ }
+ }
+
+ private PhotoPosition mPhotoPosition = getDefaultPhotoPosition(false /* normal/non opposite */);
// Header layout data
private boolean mHeaderVisible;
@@ -259,7 +274,7 @@ public class ContactListItemView extends ViewGroup
R.styleable.ContactListItemView_list_item_label_width_weight,
mLabelViewWidthWeight);
- setPadding(
+ setPaddingRelative(
a.getDimensionPixelOffset(
R.styleable.ContactListItemView_list_item_padding_left, 0),
a.getDimensionPixelOffset(
@@ -436,12 +451,14 @@ public class ContactListItemView extends ViewGroup
// Add the height of the header if visible
if (mHeaderVisible) {
+ final int headerWidth = specWidth -
+ getPaddingLeft() - getPaddingRight() - mHeaderTextIndent;
mHeaderTextView.measure(
- MeasureSpec.makeMeasureSpec(specWidth, MeasureSpec.EXACTLY),
+ MeasureSpec.makeMeasureSpec(headerWidth, MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(mHeaderBackgroundHeight, MeasureSpec.EXACTLY));
if (mCountView != null) {
mCountView.measure(
- MeasureSpec.makeMeasureSpec(specWidth, MeasureSpec.AT_MOST),
+ MeasureSpec.makeMeasureSpec(headerWidth, MeasureSpec.AT_MOST),
MeasureSpec.makeMeasureSpec(mHeaderBackgroundHeight, MeasureSpec.EXACTLY));
}
mHeaderBackgroundHeight = Math.max(mHeaderBackgroundHeight,
@@ -463,15 +480,13 @@ public class ContactListItemView extends ViewGroup
int leftBound = getPaddingLeft();
int rightBound = width - getPaddingRight();
- if (isLayoutRtl()) {
- mPhotoPosition = PhotoPosition.LEFT;
- }
+ final boolean isLayoutRtl = isLayoutRtl();
// Put the header in the top of the contact view (Text + underline view)
if (mHeaderVisible) {
- mHeaderTextView.layout(leftBound + mHeaderTextIndent,
+ mHeaderTextView.layout(isLayoutRtl ? leftBound : leftBound + mHeaderTextIndent,
0,
- rightBound,
+ isLayoutRtl ? rightBound - mHeaderTextIndent : rightBound,
mHeaderBackgroundHeight);
if (mCountView != null) {
mCountView.layout(rightBound - mCountView.getMeasuredWidth(),
@@ -529,6 +544,9 @@ public class ContactListItemView extends ViewGroup
rightBound,
photoTop + mPhotoViewHeight);
rightBound -= (mPhotoViewWidth + mGapBetweenImageAndText);
+ } else if (mKeepHorizontalPaddingForPhotoView) {
+ // Draw nothing but keep the padding.
+ rightBound -= (mPhotoViewWidth + mGapBetweenImageAndText);
}
// Add indent between left-most padding and texts.
@@ -551,22 +569,42 @@ public class ContactListItemView extends ViewGroup
}
// Presence and status
- int statusLeftBound = leftBound;
- if (isVisible(mPresenceIcon)) {
- int iconWidth = mPresenceIcon.getMeasuredWidth();
- mPresenceIcon.layout(
- leftBound,
- textTopBound,
- leftBound + iconWidth,
- textTopBound + mStatusTextViewHeight);
- statusLeftBound += (iconWidth + mPresenceIconMargin);
- }
+ if (isLayoutRtl) {
+ int statusRightBound = rightBound;
+ if (isVisible(mPresenceIcon)) {
+ int iconWidth = mPresenceIcon.getMeasuredWidth();
+ mPresenceIcon.layout(
+ rightBound - iconWidth,
+ textTopBound,
+ rightBound,
+ textTopBound + mStatusTextViewHeight);
+ statusRightBound -= (iconWidth + mPresenceIconMargin);
+ }
- if (isVisible(mStatusView)) {
- mStatusView.layout(statusLeftBound,
- textTopBound,
- rightBound,
- textTopBound + mStatusTextViewHeight);
+ if (isVisible(mStatusView)) {
+ mStatusView.layout(leftBound,
+ textTopBound,
+ statusRightBound,
+ textTopBound + mStatusTextViewHeight);
+ }
+ } else {
+ int statusLeftBound = leftBound;
+ if (isVisible(mPresenceIcon)) {
+ int iconWidth = mPresenceIcon.getMeasuredWidth();
+ mPresenceIcon.layout(
+ leftBound,
+ textTopBound,
+ leftBound + iconWidth,
+ textTopBound + mStatusTextViewHeight);
+ statusLeftBound += (iconWidth + mPresenceIconMargin);
+ }
+
+ if (isVisible(mStatusView)) {
+ mStatusView.layout(statusLeftBound,
+ textTopBound,
+ rightBound,
+ textTopBound + mStatusTextViewHeight);
+ }
}
if (isVisible(mStatusView) || isVisible(mPresenceIcon)) {
@@ -724,6 +762,7 @@ public class ContactListItemView extends ViewGroup
mHeaderTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mHeaderTextSize);
mHeaderTextView.setTypeface(mHeaderTextView.getTypeface(), Typeface.BOLD);
mHeaderTextView.setGravity(Gravity.CENTER_VERTICAL);
+ mHeaderTextView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
addView(mHeaderTextView);
}
if (mHeaderDivider == null) {
@@ -835,6 +874,8 @@ public class ContactListItemView extends ViewGroup
// setActivated() call toward this whole item view.
mNameTextView.setActivated(isActivated());
mNameTextView.setGravity(Gravity.CENTER_VERTICAL);
+ mNameTextView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
+ mNameTextView.setId(R.id.cliv_name_textview);
addView(mNameTextView);
}
return mNameTextView;
@@ -866,6 +907,7 @@ public class ContactListItemView extends ViewGroup
mPhoneticNameTextView.setTextAppearance(mContext, android.R.style.TextAppearance_Small);
mPhoneticNameTextView.setTypeface(mPhoneticNameTextView.getTypeface(), Typeface.BOLD);
mPhoneticNameTextView.setActivated(isActivated());
+ mPhoneticNameTextView.setId(R.id.cliv_phoneticname_textview);
addView(mPhoneticNameTextView);
}
return mPhoneticNameTextView;
@@ -898,11 +940,12 @@ public class ContactListItemView extends ViewGroup
if (mPhotoPosition == PhotoPosition.LEFT) {
mLabelView.setTextSize(TypedValue.COMPLEX_UNIT_SP, mCountViewTextSize);
mLabelView.setAllCaps(true);
- mLabelView.setGravity(Gravity.RIGHT);
+ mLabelView.setGravity(Gravity.END);
} else {
mLabelView.setTypeface(mLabelView.getTypeface(), Typeface.BOLD);
}
mLabelView.setActivated(isActivated());
+ mLabelView.setId(R.id.cliv_label_textview);
addView(mLabelView);
}
return mLabelView;
@@ -911,7 +954,7 @@ public class ContactListItemView extends ViewGroup
/**
* Adds or updates a text view for the data element.
*/
- public void setData(char[] text, int size) {
+ public void setData(char[] text, int size, int dataColumnIndex) {
if (text == null || size == 0) {
if (mDataView != null) {
mDataView.setVisibility(View.GONE);
@@ -920,6 +963,14 @@ public class ContactListItemView extends ViewGroup
getDataView();
setMarqueeText(mDataView, text, size);
mDataView.setVisibility(VISIBLE);
+ // Check if this is a phone number. This code works also for the legacy phone number
+ // coming from LegacyPhoneNumberListAdapter.PHONE_NUMBER_COLUMN_INDEX because they are
+ // the exact same constant value (3)
+ if (dataColumnIndex == PhoneNumberListAdapter.PhoneQuery.PHONE_NUMBER) {
+ // We have a phone number as "mDataView" so make it always LTR and VIEW_START
+ mDataView.setTextDirection(View.TEXT_DIRECTION_LTR);
+ mDataView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
+ }
}
}
@@ -954,6 +1005,7 @@ public class ContactListItemView extends ViewGroup
mDataView.setEllipsize(getTextEllipsis());
mDataView.setTextAppearance(mContext, android.R.style.TextAppearance_Small);
mDataView.setActivated(isActivated());
+ mDataView.setId(R.id.cliv_data_view);
addView(mDataView);
}
return mDataView;
@@ -1000,6 +1052,7 @@ public class ContactListItemView extends ViewGroup
mStatusView.setTextAppearance(mContext, android.R.style.TextAppearance_Small);
mStatusView.setTextColor(mSecondaryTextColor);
mStatusView.setActivated(isActivated());
+ mStatusView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
addView(mStatusView);
}
return mStatusView;
@@ -1336,7 +1389,7 @@ public class ContactListItemView extends ViewGroup
*/
public void showData(Cursor cursor, int dataColumnIndex) {
cursor.copyStringToBuffer(dataColumnIndex, mDataBuffer);
- setData(mDataBuffer.data, mDataBuffer.sizeCopied);
+ setData(mDataBuffer.data, mDataBuffer.sizeCopied, dataColumnIndex);
}
public void setActivatedStateSupported(boolean flag) {
diff --git a/src/com/android/contacts/common/list/ContactListPinnedHeaderView.java b/src/com/android/contacts/common/list/ContactListPinnedHeaderView.java
index 9aa9a9b1..bdefd4c8 100644
--- a/src/com/android/contacts/common/list/ContactListPinnedHeaderView.java
+++ b/src/com/android/contacts/common/list/ContactListPinnedHeaderView.java
@@ -87,6 +87,7 @@ public class ContactListPinnedHeaderView extends ViewGroup {
mHeaderTextView.setTypeface(mHeaderTextView.getTypeface(), Typeface.BOLD);
mHeaderTextView.setGravity(Gravity.CENTER_VERTICAL);
mHeaderTextView.setAllCaps(true);
+ mHeaderTextView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
addView(mHeaderTextView);
mHeaderDivider = new View(mContext);
mHeaderDivider.setBackgroundColor(mHeaderUnderlineColor);
@@ -115,17 +116,40 @@ public class ContactListPinnedHeaderView extends ViewGroup {
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
int width = right - left;
+ final int leftHeaderTextView;
+ final int rightHeaderTextView;
+ final int topTextView = 0;
+ final int bottomTextView = mHeaderBackgroundHeight;
+
+ int leftCountTextView = 0;
+ int rightCountTextView = 0;
+
+ if (isLayoutRtl()) {
+ rightHeaderTextView = width - mPaddingRight - mHeaderTextIndent;
+ leftHeaderTextView = rightHeaderTextView - mHeaderTextView.getMeasuredWidth();
+
+ leftCountTextView = mHeaderTextIndent + mPaddingLeft;
+ rightCountTextView = mCountTextView.getMeasuredWidth() + leftCountTextView;
+ } else {
+ leftHeaderTextView = mHeaderTextIndent + mPaddingLeft;
+ rightHeaderTextView = mHeaderTextView.getMeasuredWidth() + leftHeaderTextView;
+
+ // Order of statements matters
+ rightCountTextView = width - mPaddingRight;
+ leftCountTextView = rightCountTextView - mCountTextView.getMeasuredWidth();
+ }
+
// Take into account left and right padding when laying out the below views.
- mHeaderTextView.layout(mHeaderTextIndent + mPaddingLeft,
- 0,
- mHeaderTextView.getMeasuredWidth() + mHeaderTextIndent + mPaddingLeft,
- mHeaderBackgroundHeight);
+ mHeaderTextView.layout(leftHeaderTextView,
+ topTextView,
+ rightHeaderTextView,
+ bottomTextView);
if (isViewMeasurable(mCountTextView)) {
- mCountTextView.layout(width - mPaddingRight - mCountTextView.getMeasuredWidth(),
- 0,
- width - mPaddingRight,
- mHeaderBackgroundHeight);
+ mCountTextView.layout(leftCountTextView,
+ topTextView,
+ rightCountTextView,
+ bottomTextView);
}
mHeaderDivider.layout(mPaddingLeft,
diff --git a/src/com/android/contacts/common/list/ContactTileAdapter.java b/src/com/android/contacts/common/list/ContactTileAdapter.java
index 16dd6049..557ebff6 100644
--- a/src/com/android/contacts/common/list/ContactTileAdapter.java
+++ b/src/com/android/contacts/common/list/ContactTileAdapter.java
@@ -556,7 +556,7 @@ public class ContactTileAdapter extends BaseAdapter {
case ViewTypes.STARRED_PHONE:
case ViewTypes.STARRED:
// Setting divider visibilities
- contactTile.setPadding(0, 0,
+ contactTile.setPaddingRelative(0, 0,
childIndex >= mColumnCount - 1 ? 0 : mPaddingInPixels,
isLastRow ? 0 : mPaddingInPixels);
break;
diff --git a/src/com/android/contacts/common/list/PhoneNumberPickerFragment.java b/src/com/android/contacts/common/list/PhoneNumberPickerFragment.java
index ec0eee9c..4f99e623 100644
--- a/src/com/android/contacts/common/list/PhoneNumberPickerFragment.java
+++ b/src/com/android/contacts/common/list/PhoneNumberPickerFragment.java
@@ -62,7 +62,7 @@ public class PhoneNumberPickerFragment extends ContactEntryListFragment<ContactE
private boolean mUseCallableUri;
private ContactListItemView.PhotoPosition mPhotoPosition =
- ContactListItemView.DEFAULT_PHOTO_POSITION;
+ ContactListItemView.getDefaultPhotoPosition(false /* normal/non opposite */);
private class FilterHeaderClickListener implements OnClickListener {
@Override
diff --git a/src/com/android/contacts/common/list/PinnedHeaderListView.java b/src/com/android/contacts/common/list/PinnedHeaderListView.java
index d006f4b7..3f207a51 100644
--- a/src/com/android/contacts/common/list/PinnedHeaderListView.java
+++ b/src/com/android/contacts/common/list/PinnedHeaderListView.java
@@ -103,7 +103,7 @@ public class PinnedHeaderListView extends AutoScrollListView
private int mAnimationDuration = DEFAULT_ANIMATION_DURATION;
private boolean mAnimating;
private long mAnimationTargetTime;
- private int mHeaderPaddingLeft;
+ private int mHeaderPaddingStart;
private int mHeaderWidth;
public PinnedHeaderListView(Context context) {
@@ -123,8 +123,8 @@ public class PinnedHeaderListView extends AutoScrollListView
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
- mHeaderPaddingLeft = getPaddingLeft();
- mHeaderWidth = r - l - mHeaderPaddingLeft - getPaddingRight();
+ mHeaderPaddingStart = getPaddingStart();
+ mHeaderWidth = r - l - mHeaderPaddingStart - getPaddingEnd();
}
public void setPinnedHeaderAnimationDuration(int duration) {
@@ -170,6 +170,7 @@ public class PinnedHeaderListView extends AutoScrollListView
mHeaders[i] = new PinnedHeader();
}
mHeaders[i].view = mAdapter.getPinnedHeaderView(i, mHeaders[i].view, this);
+ mHeaders[i].view.setLayoutDirection(getLayoutDirection());
}
mAnimationTargetTime = System.currentTimeMillis() + mAnimationDuration;
@@ -511,7 +512,9 @@ public class PinnedHeaderListView extends AutoScrollListView
if (header.visible) {
View view = header.view;
int saveCount = canvas.save();
- canvas.translate(mHeaderPaddingLeft, header.y);
+ canvas.translate(isLayoutRtl() ?
+ getWidth() - mHeaderPaddingStart - mHeaderWidth : mHeaderPaddingStart,
+ header.y);
if (header.state == FADING) {
mBounds.set(0, 0, mHeaderWidth, view.getHeight());
canvas.saveLayerAlpha(mBounds, header.alpha, Canvas.ALL_SAVE_FLAG);