Merge change Ie07ae802 into eclair
* changes:
New icon
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 67a55c0..0950ff0 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -261,14 +261,14 @@
</intent-filter>
</activity>
- <!-- Used to show FastTrack window over a translucent activity, which is a
+ <!-- Used to show QuickContact window over a translucent activity, which is a
temporary hack until we add better framework support. -->
<activity
- android:name=".ui.FastTrackActivity"
- android:theme="@style/FullyTranslucent.FastTrack">
+ android:name=".ui.QuickContactActivity"
+ android:theme="@style/FullyTranslucent.QuickContact">
<intent-filter>
- <action android:name="com.android.contacts.action.FAST_TRACK" />
+ <action android:name="com.android.contacts.action.QUICK_CONTACT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" />
</intent-filter>
diff --git a/res/anim/fasttrack.xml b/res/anim/quickcontact.xml
similarity index 100%
rename from res/anim/fasttrack.xml
rename to res/anim/quickcontact.xml
diff --git a/res/anim/fasttrack_above_enter.xml b/res/anim/quickcontact_above_enter.xml
similarity index 100%
rename from res/anim/fasttrack_above_enter.xml
rename to res/anim/quickcontact_above_enter.xml
diff --git a/res/anim/fasttrack_above_exit.xml b/res/anim/quickcontact_above_exit.xml
similarity index 100%
rename from res/anim/fasttrack_above_exit.xml
rename to res/anim/quickcontact_above_exit.xml
diff --git a/res/anim/fasttrack_below_enter.xml b/res/anim/quickcontact_below_enter.xml
similarity index 100%
rename from res/anim/fasttrack_below_enter.xml
rename to res/anim/quickcontact_below_enter.xml
diff --git a/res/anim/fasttrack_below_exit.xml b/res/anim/quickcontact_below_exit.xml
similarity index 100%
rename from res/anim/fasttrack_below_exit.xml
rename to res/anim/quickcontact_below_exit.xml
diff --git a/res/drawable-finger/arrow_down.png b/res/drawable-finger/arrow_down.png
deleted file mode 100644
index 8af76a3..0000000
--- a/res/drawable-finger/arrow_down.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/arrow_up.png b/res/drawable-finger/arrow_up.png
deleted file mode 100644
index b5a1f51..0000000
--- a/res/drawable-finger/arrow_up.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/dial_num_pound_blk.png b/res/drawable-finger/dial_num_pound_blk.png
deleted file mode 100644
index 4dabda4..0000000
--- a/res/drawable-finger/dial_num_pound_blk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/dial_num_pound_wht.png b/res/drawable-finger/dial_num_pound_wht.png
deleted file mode 100644
index f27ae87..0000000
--- a/res/drawable-finger/dial_num_pound_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/dial_num_star_blk.png b/res/drawable-finger/dial_num_star_blk.png
deleted file mode 100644
index af917ef..0000000
--- a/res/drawable-finger/dial_num_star_blk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/dial_num_star_wht.png b/res/drawable-finger/dial_num_star_wht.png
deleted file mode 100644
index ffbd43f..0000000
--- a/res/drawable-finger/dial_num_star_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_badge_dark_normal.png b/res/drawable-finger/fasttrack_badge_dark_normal.png
deleted file mode 100644
index 5d10608..0000000
--- a/res/drawable-finger/fasttrack_badge_dark_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_badge_dark_pressed.png b/res/drawable-finger/fasttrack_badge_dark_pressed.png
deleted file mode 100644
index 8cccedc..0000000
--- a/res/drawable-finger/fasttrack_badge_dark_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_badge_light_normal.png b/res/drawable-finger/fasttrack_badge_light_normal.png
deleted file mode 100644
index 2d19931..0000000
--- a/res/drawable-finger/fasttrack_badge_light_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_badge_light_pressed.png b/res/drawable-finger/fasttrack_badge_light_pressed.png
deleted file mode 100644
index e0ed3b6..0000000
--- a/res/drawable-finger/fasttrack_badge_light_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_badge_shadow.png b/res/drawable-finger/fasttrack_badge_shadow.png
deleted file mode 100644
index 8fe85d5..0000000
--- a/res/drawable-finger/fasttrack_badge_shadow.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_background.9.png b/res/drawable-finger/fasttrack_slider_background.9.png
deleted file mode 100644
index dc28aa7..0000000
--- a/res/drawable-finger/fasttrack_slider_background.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_btn_normal.png b/res/drawable-finger/fasttrack_slider_btn_normal.png
deleted file mode 100644
index 0c45399..0000000
--- a/res/drawable-finger/fasttrack_slider_btn_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_btn_on.png b/res/drawable-finger/fasttrack_slider_btn_on.png
deleted file mode 100644
index 4107d82..0000000
--- a/res/drawable-finger/fasttrack_slider_btn_on.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_btn_pressed.png b/res/drawable-finger/fasttrack_slider_btn_pressed.png
deleted file mode 100644
index ba04e06..0000000
--- a/res/drawable-finger/fasttrack_slider_btn_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_btn_selected.png b/res/drawable-finger/fasttrack_slider_btn_selected.png
deleted file mode 100644
index 126b1ed..0000000
--- a/res/drawable-finger/fasttrack_slider_btn_selected.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/ic_menu_split.png b/res/drawable-finger/ic_menu_split.png
deleted file mode 100644
index 9d69e4c..0000000
--- a/res/drawable-finger/ic_menu_split.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_checkbox.xml b/res/drawable-finger/quickcontact_disambig_checkbox.xml
similarity index 84%
rename from res/drawable-finger/fasttrack_disambig_checkbox.xml
rename to res/drawable-finger/quickcontact_disambig_checkbox.xml
index 0bd2030..4add69c 100644
--- a/res/drawable-finger/fasttrack_disambig_checkbox.xml
+++ b/res/drawable-finger/quickcontact_disambig_checkbox.xml
@@ -18,8 +18,8 @@
android:dither="true">
<item android:state_checked="true"
- android:drawable="@drawable/fasttrack_disambig_checkbox_on" />
+ android:drawable="@drawable/quickcontact_disambig_checkbox_on" />
<item
- android:drawable="@drawable/fasttrack_disambig_checkbox_off" />
+ android:drawable="@drawable/quickcontact_disambig_checkbox_off" />
</selector>
diff --git a/res/drawable-finger/fasttrack_slider_btn.xml b/res/drawable-finger/quickcontact_slider_btn.xml
similarity index 72%
rename from res/drawable-finger/fasttrack_slider_btn.xml
rename to res/drawable-finger/quickcontact_slider_btn.xml
index b89a543..a1be8f4 100644
--- a/res/drawable-finger/fasttrack_slider_btn.xml
+++ b/res/drawable-finger/quickcontact_slider_btn.xml
@@ -18,14 +18,14 @@
android:dither="true">
<item android:state_checked="true"
- android:drawable="@drawable/fasttrack_slider_btn_on" />
+ android:drawable="@drawable/quickcontact_slider_btn_on" />
<item android:state_window_focused="false"
- android:drawable="@drawable/fasttrack_slider_btn_normal" />
+ android:drawable="@drawable/quickcontact_slider_btn_normal" />
<item android:state_pressed="true"
- android:drawable="@drawable/fasttrack_slider_btn_pressed" />
+ android:drawable="@drawable/quickcontact_slider_btn_pressed" />
<item android:state_focused="true"
- android:drawable="@drawable/fasttrack_slider_btn_selected" />
+ android:drawable="@drawable/quickcontact_slider_btn_selected" />
<item
- android:drawable="@drawable/fasttrack_slider_btn_normal" />
+ android:drawable="@drawable/quickcontact_slider_btn_normal" />
</selector>
diff --git a/res/drawable-hdpi-finger/badge_action_call.png b/res/drawable-hdpi-finger/badge_action_call.png
new file mode 100755
index 0000000..105f7d0
--- /dev/null
+++ b/res/drawable-hdpi-finger/badge_action_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/badge_action_sms.png b/res/drawable-hdpi-finger/badge_action_sms.png
new file mode 100755
index 0000000..a7862f6
--- /dev/null
+++ b/res/drawable-hdpi-finger/badge_action_sms.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_circle_disable.png b/res/drawable-hdpi-finger/btn_circle_disable.png
new file mode 100755
index 0000000..ae063b5
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_circle_disable.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_circle_disable_focused.png b/res/drawable-hdpi-finger/btn_circle_disable_focused.png
new file mode 100755
index 0000000..7a5d4fe
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_circle_disable_focused.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_circle_normal.png b/res/drawable-hdpi-finger/btn_circle_normal.png
new file mode 100755
index 0000000..5eda668
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_circle_normal.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_circle_pressed.png b/res/drawable-hdpi-finger/btn_circle_pressed.png
new file mode 100755
index 0000000..88848ba
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_circle_pressed.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_circle_selected.png b/res/drawable-hdpi-finger/btn_circle_selected.png
new file mode 100755
index 0000000..7469070
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_circle_selected.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/contact_picture_border_highlight.9.png b/res/drawable-hdpi-finger/contact_picture_border_highlight.9.png
new file mode 100755
index 0000000..776d614
--- /dev/null
+++ b/res/drawable-hdpi-finger/contact_picture_border_highlight.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/contact_picture_border_in_list.9.png b/res/drawable-hdpi-finger/contact_picture_border_in_list.9.png
new file mode 100755
index 0000000..8166d4f
--- /dev/null
+++ b/res/drawable-hdpi-finger/contact_picture_border_in_list.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/contact_picture_border_normal.9.png b/res/drawable-hdpi-finger/contact_picture_border_normal.9.png
new file mode 100755
index 0000000..be67b1a
--- /dev/null
+++ b/res/drawable-hdpi-finger/contact_picture_border_normal.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/contact_picture_border_pressed.9.png b/res/drawable-hdpi-finger/contact_picture_border_pressed.9.png
new file mode 100755
index 0000000..32fbaa5
--- /dev/null
+++ b/res/drawable-hdpi-finger/contact_picture_border_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_btn_round_minus.png b/res/drawable-hdpi-finger/ic_btn_round_minus.png
new file mode 100755
index 0000000..27af3fa
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_btn_round_minus.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_btn_round_more.png b/res/drawable-hdpi-finger/ic_btn_round_more.png
new file mode 100755
index 0000000..9883d55
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_btn_round_more.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_btn_round_plus.png b/res/drawable-hdpi-finger/ic_btn_round_plus.png
new file mode 100755
index 0000000..b24168c
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_btn_round_plus.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_call_log_header_incoming_call.png b/res/drawable-hdpi-finger/ic_call_log_header_incoming_call.png
new file mode 100755
index 0000000..95c0255
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_call_log_header_incoming_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_call_log_header_missed_call.png b/res/drawable-hdpi-finger/ic_call_log_header_missed_call.png
new file mode 100755
index 0000000..0a43e69
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_call_log_header_missed_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_call_log_header_outgoing_call.png b/res/drawable-hdpi-finger/ic_call_log_header_outgoing_call.png
new file mode 100755
index 0000000..d061ba3
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_call_log_header_outgoing_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_call_log_list_incoming_call.png b/res/drawable-hdpi-finger/ic_call_log_list_incoming_call.png
new file mode 100755
index 0000000..9c016fa
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_call_log_list_incoming_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_call_log_list_missed_call.png b/res/drawable-hdpi-finger/ic_call_log_list_missed_call.png
new file mode 100755
index 0000000..8dcb279
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_call_log_list_missed_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_call_log_list_outgoing_call.png b/res/drawable-hdpi-finger/ic_call_log_list_outgoing_call.png
new file mode 100755
index 0000000..256de19
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_call_log_list_outgoing_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_contact_list_picture.png b/res/drawable-hdpi-finger/ic_contact_list_picture.png
new file mode 100755
index 0000000..296ab9f
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_contact_list_picture.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_contact_picture.png b/res/drawable-hdpi-finger/ic_contact_picture.png
new file mode 100755
index 0000000..7c34f5c
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_contact_picture.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_contact_picture_2.png b/res/drawable-hdpi-finger/ic_contact_picture_2.png
new file mode 100755
index 0000000..5e65276
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_contact_picture_2.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_contact_picture_3.png b/res/drawable-hdpi-finger/ic_contact_picture_3.png
new file mode 100755
index 0000000..a8ec1e1
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_contact_picture_3.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_default_number.png b/res/drawable-hdpi-finger/ic_default_number.png
new file mode 100755
index 0000000..cdc05a8
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_default_number.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_dial_number_blk.png b/res/drawable-hdpi-finger/ic_dial_number_blk.png
new file mode 100755
index 0000000..cad1d80
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_dial_number_blk.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_dial_number_wht.png b/res/drawable-hdpi-finger/ic_dial_number_wht.png
new file mode 100755
index 0000000..54f5ac0
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_dial_number_wht.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_dialer_fork_add_call.png b/res/drawable-hdpi-finger/ic_dialer_fork_add_call.png
new file mode 100755
index 0000000..e046996
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_dialer_fork_add_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_dialer_fork_current_call.png b/res/drawable-hdpi-finger/ic_dialer_fork_current_call.png
new file mode 100755
index 0000000..6e1a395
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_dialer_fork_current_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_dialer_fork_tt_keypad.png b/res/drawable-hdpi-finger/ic_dialer_fork_tt_keypad.png
new file mode 100755
index 0000000..6b50da1
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_dialer_fork_tt_keypad.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_menu_account_list.png b/res/drawable-hdpi-finger/ic_menu_account_list.png
new file mode 100755
index 0000000..a69c642
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_menu_account_list.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_menu_add_picture.png b/res/drawable-hdpi-finger/ic_menu_add_picture.png
new file mode 100755
index 0000000..85faf1c
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_menu_add_picture.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_menu_export_contact.png b/res/drawable-hdpi-finger/ic_menu_export_contact.png
new file mode 100755
index 0000000..c9781f7
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_menu_export_contact.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_menu_import_contact.png b/res/drawable-hdpi-finger/ic_menu_import_contact.png
new file mode 100755
index 0000000..18de61f
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_menu_import_contact.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_menu_merge.png b/res/drawable-hdpi-finger/ic_menu_merge.png
new file mode 100644
index 0000000..d3ed8cc
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_menu_merge.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_menu_show_barcode.png b/res/drawable-hdpi-finger/ic_menu_show_barcode.png
new file mode 100755
index 0000000..e36efdd
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_menu_show_barcode.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_tab_selected_friends_list.png b/res/drawable-hdpi-finger/ic_tab_selected_friends_list.png
new file mode 100755
index 0000000..201b80f
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_tab_selected_friends_list.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_tab_unselected_friends_list.png b/res/drawable-hdpi-finger/ic_tab_unselected_friends_list.png
new file mode 100755
index 0000000..6a31485
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_tab_unselected_friends_list.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_arrow_down.png b/res/drawable-hdpi-finger/quickcontact_arrow_down.png
new file mode 100644
index 0000000..7eba756
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_arrow_down.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_arrow_up.png b/res/drawable-hdpi-finger/quickcontact_arrow_up.png
new file mode 100644
index 0000000..6daf90a
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_arrow_up.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_bottom_frame.9.png b/res/drawable-hdpi-finger/quickcontact_bottom_frame.9.png
new file mode 100644
index 0000000..9fac225
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_bottom_frame.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_disambig_bottom_bg.9.png b/res/drawable-hdpi-finger/quickcontact_disambig_bottom_bg.9.png
new file mode 100644
index 0000000..4702f16
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_disambig_bottom_bg.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_disambig_checkbox_off.png b/res/drawable-hdpi-finger/quickcontact_disambig_checkbox_off.png
new file mode 100644
index 0000000..f87572c
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_disambig_checkbox_off.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_disambig_checkbox_on.png b/res/drawable-hdpi-finger/quickcontact_disambig_checkbox_on.png
new file mode 100644
index 0000000..3ea5360
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_disambig_checkbox_on.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_divider.9.png b/res/drawable-hdpi-finger/quickcontact_disambig_divider.9.png
similarity index 100%
rename from res/drawable-finger/fasttrack_disambig_divider.9.png
rename to res/drawable-hdpi-finger/quickcontact_disambig_divider.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_drop_shadow.9.png b/res/drawable-hdpi-finger/quickcontact_drop_shadow.9.png
new file mode 100644
index 0000000..5049903
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_drop_shadow.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_frame_divider_med.png b/res/drawable-hdpi-finger/quickcontact_frame_divider_med.png
new file mode 100644
index 0000000..e0e9ca4
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_frame_divider_med.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_background.png b/res/drawable-hdpi-finger/quickcontact_slider_background.png
new file mode 100644
index 0000000..c9c09ee
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_background.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_btn_normal.9.png b/res/drawable-hdpi-finger/quickcontact_slider_btn_normal.9.png
new file mode 100644
index 0000000..9d3d7ad
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_btn_normal.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_btn_on.9.png b/res/drawable-hdpi-finger/quickcontact_slider_btn_on.9.png
new file mode 100644
index 0000000..ac2b496
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_btn_on.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_btn_pressed.9.png b/res/drawable-hdpi-finger/quickcontact_slider_btn_pressed.9.png
new file mode 100644
index 0000000..d9da598
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_btn_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_btn_selected.9.png b/res/drawable-hdpi-finger/quickcontact_slider_btn_selected.9.png
new file mode 100644
index 0000000..72d053b
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_btn_selected.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_grip_left.png b/res/drawable-hdpi-finger/quickcontact_slider_grip_left.png
new file mode 100644
index 0000000..97f12aa
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_grip_left.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_grip_right.png b/res/drawable-hdpi-finger/quickcontact_slider_grip_right.png
new file mode 100644
index 0000000..e410059
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_grip_right.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_presence_active.png b/res/drawable-hdpi-finger/quickcontact_slider_presence_active.png
new file mode 100644
index 0000000..f62e681
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_presence_active.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_presence_away.png b/res/drawable-hdpi-finger/quickcontact_slider_presence_away.png
new file mode 100644
index 0000000..0516b97
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_presence_away.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_presence_busy.png b/res/drawable-hdpi-finger/quickcontact_slider_presence_busy.png
new file mode 100644
index 0000000..26063f4
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_presence_busy.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_presence_inactive.png b/res/drawable-hdpi-finger/quickcontact_slider_presence_inactive.png
new file mode 100644
index 0000000..fdcf75e
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_presence_inactive.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_top_frame.9.png b/res/drawable-hdpi-finger/quickcontact_top_frame.9.png
new file mode 100644
index 0000000..4556bb2
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_top_frame.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_action_add.png b/res/drawable-hdpi-finger/sym_action_add.png
new file mode 100755
index 0000000..45a9ec5
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_action_add.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_action_map.png b/res/drawable-hdpi-finger/sym_action_map.png
new file mode 100755
index 0000000..cf00c7b
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_action_map.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_action_organization.png b/res/drawable-hdpi-finger/sym_action_organization.png
new file mode 100755
index 0000000..9db8b44
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_action_organization.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_action_sms.png b/res/drawable-hdpi-finger/sym_action_sms.png
new file mode 100755
index 0000000..4596737
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_action_sms.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_action_view_contact.png b/res/drawable-hdpi-finger/sym_action_view_contact.png
new file mode 100755
index 0000000..3a016ff
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_action_view_contact.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_note.png b/res/drawable-hdpi-finger/sym_note.png
new file mode 100755
index 0000000..5257329
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_note.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_ringtone.png b/res/drawable-hdpi-finger/sym_ringtone.png
new file mode 100755
index 0000000..ad103e8
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_ringtone.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_send_to_voicemail.png b/res/drawable-hdpi-finger/sym_send_to_voicemail.png
new file mode 100755
index 0000000..ac43473
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_send_to_voicemail.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/title_bar_shadow.9.png b/res/drawable-hdpi-finger/title_bar_shadow.9.png
new file mode 100755
index 0000000..a5e458a
--- /dev/null
+++ b/res/drawable-hdpi-finger/title_bar_shadow.9.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_contacts_details.png b/res/drawable-hdpi/ic_contacts_details.png
new file mode 100755
index 0000000..35f8106
--- /dev/null
+++ b/res/drawable-hdpi/ic_contacts_details.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_import_export.png b/res/drawable-hdpi/ic_menu_import_export.png
new file mode 100644
index 0000000..1cefb7c
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_import_export.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_mark.png b/res/drawable-hdpi/ic_menu_mark.png
new file mode 100755
index 0000000..724d787
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_mark.png
Binary files differ
diff --git a/res/drawable-finger/badge_action_call.png b/res/drawable-mdpi-finger/badge_action_call.png
similarity index 100%
rename from res/drawable-finger/badge_action_call.png
rename to res/drawable-mdpi-finger/badge_action_call.png
Binary files differ
diff --git a/res/drawable-finger/badge_action_sms.png b/res/drawable-mdpi-finger/badge_action_sms.png
similarity index 100%
rename from res/drawable-finger/badge_action_sms.png
rename to res/drawable-mdpi-finger/badge_action_sms.png
Binary files differ
diff --git a/res/drawable-finger/btn_circle_disable.png b/res/drawable-mdpi-finger/btn_circle_disable.png
similarity index 100%
rename from res/drawable-finger/btn_circle_disable.png
rename to res/drawable-mdpi-finger/btn_circle_disable.png
Binary files differ
diff --git a/res/drawable-finger/btn_circle_disable_focused.png b/res/drawable-mdpi-finger/btn_circle_disable_focused.png
similarity index 100%
rename from res/drawable-finger/btn_circle_disable_focused.png
rename to res/drawable-mdpi-finger/btn_circle_disable_focused.png
Binary files differ
diff --git a/res/drawable-finger/btn_circle_normal.png b/res/drawable-mdpi-finger/btn_circle_normal.png
similarity index 100%
rename from res/drawable-finger/btn_circle_normal.png
rename to res/drawable-mdpi-finger/btn_circle_normal.png
Binary files differ
diff --git a/res/drawable-finger/btn_circle_pressed.png b/res/drawable-mdpi-finger/btn_circle_pressed.png
similarity index 100%
rename from res/drawable-finger/btn_circle_pressed.png
rename to res/drawable-mdpi-finger/btn_circle_pressed.png
Binary files differ
diff --git a/res/drawable-finger/btn_circle_selected.png b/res/drawable-mdpi-finger/btn_circle_selected.png
similarity index 100%
rename from res/drawable-finger/btn_circle_selected.png
rename to res/drawable-mdpi-finger/btn_circle_selected.png
Binary files differ
diff --git a/res/drawable-finger/contact_picture_border_highlight.9.png b/res/drawable-mdpi-finger/contact_picture_border_highlight.9.png
similarity index 100%
rename from res/drawable-finger/contact_picture_border_highlight.9.png
rename to res/drawable-mdpi-finger/contact_picture_border_highlight.9.png
Binary files differ
diff --git a/res/drawable-finger/contact_picture_border_in_list.9.png b/res/drawable-mdpi-finger/contact_picture_border_in_list.9.png
similarity index 100%
rename from res/drawable-finger/contact_picture_border_in_list.9.png
rename to res/drawable-mdpi-finger/contact_picture_border_in_list.9.png
Binary files differ
diff --git a/res/drawable-finger/contact_picture_border_normal.9.png b/res/drawable-mdpi-finger/contact_picture_border_normal.9.png
similarity index 100%
rename from res/drawable-finger/contact_picture_border_normal.9.png
rename to res/drawable-mdpi-finger/contact_picture_border_normal.9.png
Binary files differ
diff --git a/res/drawable-finger/contact_picture_border_pressed.9.png b/res/drawable-mdpi-finger/contact_picture_border_pressed.9.png
similarity index 100%
rename from res/drawable-finger/contact_picture_border_pressed.9.png
rename to res/drawable-mdpi-finger/contact_picture_border_pressed.9.png
Binary files differ
diff --git a/res/drawable-finger/ic_btn_round_minus.png b/res/drawable-mdpi-finger/ic_btn_round_minus.png
similarity index 100%
rename from res/drawable-finger/ic_btn_round_minus.png
rename to res/drawable-mdpi-finger/ic_btn_round_minus.png
Binary files differ
diff --git a/res/drawable-finger/ic_btn_round_more.png b/res/drawable-mdpi-finger/ic_btn_round_more.png
similarity index 100%
rename from res/drawable-finger/ic_btn_round_more.png
rename to res/drawable-mdpi-finger/ic_btn_round_more.png
Binary files differ
diff --git a/res/drawable-finger/ic_btn_round_plus.png b/res/drawable-mdpi-finger/ic_btn_round_plus.png
similarity index 100%
rename from res/drawable-finger/ic_btn_round_plus.png
rename to res/drawable-mdpi-finger/ic_btn_round_plus.png
Binary files differ
diff --git a/res/drawable-finger/ic_call_log_header_incoming_call.png b/res/drawable-mdpi-finger/ic_call_log_header_incoming_call.png
similarity index 100%
rename from res/drawable-finger/ic_call_log_header_incoming_call.png
rename to res/drawable-mdpi-finger/ic_call_log_header_incoming_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_call_log_header_missed_call.png b/res/drawable-mdpi-finger/ic_call_log_header_missed_call.png
similarity index 100%
rename from res/drawable-finger/ic_call_log_header_missed_call.png
rename to res/drawable-mdpi-finger/ic_call_log_header_missed_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_call_log_header_outgoing_call.png b/res/drawable-mdpi-finger/ic_call_log_header_outgoing_call.png
similarity index 100%
rename from res/drawable-finger/ic_call_log_header_outgoing_call.png
rename to res/drawable-mdpi-finger/ic_call_log_header_outgoing_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_call_log_list_incoming_call.png b/res/drawable-mdpi-finger/ic_call_log_list_incoming_call.png
similarity index 100%
rename from res/drawable-finger/ic_call_log_list_incoming_call.png
rename to res/drawable-mdpi-finger/ic_call_log_list_incoming_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_call_log_list_missed_call.png b/res/drawable-mdpi-finger/ic_call_log_list_missed_call.png
similarity index 100%
rename from res/drawable-finger/ic_call_log_list_missed_call.png
rename to res/drawable-mdpi-finger/ic_call_log_list_missed_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_call_log_list_outgoing_call.png b/res/drawable-mdpi-finger/ic_call_log_list_outgoing_call.png
similarity index 100%
rename from res/drawable-finger/ic_call_log_list_outgoing_call.png
rename to res/drawable-mdpi-finger/ic_call_log_list_outgoing_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_contact_list_picture.png b/res/drawable-mdpi-finger/ic_contact_list_picture.png
similarity index 100%
rename from res/drawable-finger/ic_contact_list_picture.png
rename to res/drawable-mdpi-finger/ic_contact_list_picture.png
Binary files differ
diff --git a/res/drawable-finger/ic_contact_picture.png b/res/drawable-mdpi-finger/ic_contact_picture.png
similarity index 100%
rename from res/drawable-finger/ic_contact_picture.png
rename to res/drawable-mdpi-finger/ic_contact_picture.png
Binary files differ
diff --git a/res/drawable-finger/ic_contact_picture_2.png b/res/drawable-mdpi-finger/ic_contact_picture_2.png
similarity index 100%
rename from res/drawable-finger/ic_contact_picture_2.png
rename to res/drawable-mdpi-finger/ic_contact_picture_2.png
Binary files differ
diff --git a/res/drawable-finger/ic_contact_picture_3.png b/res/drawable-mdpi-finger/ic_contact_picture_3.png
similarity index 100%
rename from res/drawable-finger/ic_contact_picture_3.png
rename to res/drawable-mdpi-finger/ic_contact_picture_3.png
Binary files differ
diff --git a/res/drawable-finger/ic_default_number.png b/res/drawable-mdpi-finger/ic_default_number.png
similarity index 100%
rename from res/drawable-finger/ic_default_number.png
rename to res/drawable-mdpi-finger/ic_default_number.png
Binary files differ
diff --git a/res/drawable-finger/ic_dial_number_blk.png b/res/drawable-mdpi-finger/ic_dial_number_blk.png
similarity index 100%
rename from res/drawable-finger/ic_dial_number_blk.png
rename to res/drawable-mdpi-finger/ic_dial_number_blk.png
Binary files differ
diff --git a/res/drawable-finger/ic_dial_number_wht.png b/res/drawable-mdpi-finger/ic_dial_number_wht.png
similarity index 100%
rename from res/drawable-finger/ic_dial_number_wht.png
rename to res/drawable-mdpi-finger/ic_dial_number_wht.png
Binary files differ
diff --git a/res/drawable-finger/ic_dialer_fork_add_call.png b/res/drawable-mdpi-finger/ic_dialer_fork_add_call.png
similarity index 100%
rename from res/drawable-finger/ic_dialer_fork_add_call.png
rename to res/drawable-mdpi-finger/ic_dialer_fork_add_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_dialer_fork_current_call.png b/res/drawable-mdpi-finger/ic_dialer_fork_current_call.png
similarity index 100%
rename from res/drawable-finger/ic_dialer_fork_current_call.png
rename to res/drawable-mdpi-finger/ic_dialer_fork_current_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_dialer_fork_tt_keypad.png b/res/drawable-mdpi-finger/ic_dialer_fork_tt_keypad.png
similarity index 100%
rename from res/drawable-finger/ic_dialer_fork_tt_keypad.png
rename to res/drawable-mdpi-finger/ic_dialer_fork_tt_keypad.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_account_list.png b/res/drawable-mdpi-finger/ic_menu_account_list.png
similarity index 100%
rename from res/drawable-finger/ic_menu_account_list.png
rename to res/drawable-mdpi-finger/ic_menu_account_list.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_add_picture.png b/res/drawable-mdpi-finger/ic_menu_add_picture.png
similarity index 100%
rename from res/drawable-finger/ic_menu_add_picture.png
rename to res/drawable-mdpi-finger/ic_menu_add_picture.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_export_contact.png b/res/drawable-mdpi-finger/ic_menu_export_contact.png
similarity index 100%
rename from res/drawable-finger/ic_menu_export_contact.png
rename to res/drawable-mdpi-finger/ic_menu_export_contact.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_import_contact.png b/res/drawable-mdpi-finger/ic_menu_import_contact.png
similarity index 100%
rename from res/drawable-finger/ic_menu_import_contact.png
rename to res/drawable-mdpi-finger/ic_menu_import_contact.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_merge.png b/res/drawable-mdpi-finger/ic_menu_merge.png
similarity index 100%
rename from res/drawable-finger/ic_menu_merge.png
rename to res/drawable-mdpi-finger/ic_menu_merge.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_show_barcode.png b/res/drawable-mdpi-finger/ic_menu_show_barcode.png
similarity index 100%
rename from res/drawable-finger/ic_menu_show_barcode.png
rename to res/drawable-mdpi-finger/ic_menu_show_barcode.png
Binary files differ
diff --git a/res/drawable-finger/ic_tab_selected_friends_list.png b/res/drawable-mdpi-finger/ic_tab_selected_friends_list.png
similarity index 100%
rename from res/drawable-finger/ic_tab_selected_friends_list.png
rename to res/drawable-mdpi-finger/ic_tab_selected_friends_list.png
Binary files differ
diff --git a/res/drawable-finger/ic_tab_unselected_friends_list.png b/res/drawable-mdpi-finger/ic_tab_unselected_friends_list.png
similarity index 100%
rename from res/drawable-finger/ic_tab_unselected_friends_list.png
rename to res/drawable-mdpi-finger/ic_tab_unselected_friends_list.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_arrow_down.png b/res/drawable-mdpi-finger/quickcontact_arrow_down.png
similarity index 100%
rename from res/drawable-finger/fasttrack_arrow_down.png
rename to res/drawable-mdpi-finger/quickcontact_arrow_down.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_arrow_up.png b/res/drawable-mdpi-finger/quickcontact_arrow_up.png
similarity index 100%
rename from res/drawable-finger/fasttrack_arrow_up.png
rename to res/drawable-mdpi-finger/quickcontact_arrow_up.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_bottom_frame.9.png b/res/drawable-mdpi-finger/quickcontact_bottom_frame.9.png
similarity index 100%
rename from res/drawable-finger/fasttrack_bottom_frame.9.png
rename to res/drawable-mdpi-finger/quickcontact_bottom_frame.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_bottom_bg.9.png b/res/drawable-mdpi-finger/quickcontact_disambig_bottom_bg.9.png
similarity index 100%
rename from res/drawable-finger/fasttrack_disambig_bottom_bg.9.png
rename to res/drawable-mdpi-finger/quickcontact_disambig_bottom_bg.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_checkbox_off.png b/res/drawable-mdpi-finger/quickcontact_disambig_checkbox_off.png
similarity index 100%
rename from res/drawable-finger/fasttrack_disambig_checkbox_off.png
rename to res/drawable-mdpi-finger/quickcontact_disambig_checkbox_off.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_checkbox_on.png b/res/drawable-mdpi-finger/quickcontact_disambig_checkbox_on.png
similarity index 100%
rename from res/drawable-finger/fasttrack_disambig_checkbox_on.png
rename to res/drawable-mdpi-finger/quickcontact_disambig_checkbox_on.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_divider.9.png b/res/drawable-mdpi-finger/quickcontact_disambig_divider.9.png
similarity index 100%
copy from res/drawable-finger/fasttrack_disambig_divider.9.png
copy to res/drawable-mdpi-finger/quickcontact_disambig_divider.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_drop_shadow.9.png b/res/drawable-mdpi-finger/quickcontact_drop_shadow.9.png
similarity index 100%
rename from res/drawable-finger/fasttrack_drop_shadow.9.png
rename to res/drawable-mdpi-finger/quickcontact_drop_shadow.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_frame_divider_med.png b/res/drawable-mdpi-finger/quickcontact_frame_divider_med.png
similarity index 100%
rename from res/drawable-finger/fasttrack_frame_divider_med.png
rename to res/drawable-mdpi-finger/quickcontact_frame_divider_med.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/quickcontact_slider_background.png b/res/drawable-mdpi-finger/quickcontact_slider_background.png
new file mode 100644
index 0000000..b6a9f91
--- /dev/null
+++ b/res/drawable-mdpi-finger/quickcontact_slider_background.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/quickcontact_slider_btn_normal.9.png b/res/drawable-mdpi-finger/quickcontact_slider_btn_normal.9.png
new file mode 100644
index 0000000..cf4f1e4
--- /dev/null
+++ b/res/drawable-mdpi-finger/quickcontact_slider_btn_normal.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/quickcontact_slider_btn_on.9.png b/res/drawable-mdpi-finger/quickcontact_slider_btn_on.9.png
new file mode 100644
index 0000000..330f49b
--- /dev/null
+++ b/res/drawable-mdpi-finger/quickcontact_slider_btn_on.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/quickcontact_slider_btn_pressed.9.png b/res/drawable-mdpi-finger/quickcontact_slider_btn_pressed.9.png
new file mode 100644
index 0000000..d4916f5
--- /dev/null
+++ b/res/drawable-mdpi-finger/quickcontact_slider_btn_pressed.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/quickcontact_slider_btn_selected.9.png b/res/drawable-mdpi-finger/quickcontact_slider_btn_selected.9.png
new file mode 100644
index 0000000..b910028
--- /dev/null
+++ b/res/drawable-mdpi-finger/quickcontact_slider_btn_selected.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_grip_left.png b/res/drawable-mdpi-finger/quickcontact_slider_grip_left.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_grip_left.png
rename to res/drawable-mdpi-finger/quickcontact_slider_grip_left.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_grip_right.png b/res/drawable-mdpi-finger/quickcontact_slider_grip_right.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_grip_right.png
rename to res/drawable-mdpi-finger/quickcontact_slider_grip_right.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_active.png b/res/drawable-mdpi-finger/quickcontact_slider_presence_active.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_presence_active.png
rename to res/drawable-mdpi-finger/quickcontact_slider_presence_active.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_away.png b/res/drawable-mdpi-finger/quickcontact_slider_presence_away.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_presence_away.png
rename to res/drawable-mdpi-finger/quickcontact_slider_presence_away.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_busy.png b/res/drawable-mdpi-finger/quickcontact_slider_presence_busy.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_presence_busy.png
rename to res/drawable-mdpi-finger/quickcontact_slider_presence_busy.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_inactive.png b/res/drawable-mdpi-finger/quickcontact_slider_presence_inactive.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_presence_inactive.png
rename to res/drawable-mdpi-finger/quickcontact_slider_presence_inactive.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_top_frame.9.png b/res/drawable-mdpi-finger/quickcontact_top_frame.9.png
similarity index 100%
rename from res/drawable-finger/fasttrack_top_frame.9.png
rename to res/drawable-mdpi-finger/quickcontact_top_frame.9.png
Binary files differ
diff --git a/res/drawable-finger/sym_action_add.png b/res/drawable-mdpi-finger/sym_action_add.png
similarity index 100%
rename from res/drawable-finger/sym_action_add.png
rename to res/drawable-mdpi-finger/sym_action_add.png
Binary files differ
diff --git a/res/drawable-finger/sym_action_map.png b/res/drawable-mdpi-finger/sym_action_map.png
similarity index 100%
rename from res/drawable-finger/sym_action_map.png
rename to res/drawable-mdpi-finger/sym_action_map.png
Binary files differ
diff --git a/res/drawable-finger/sym_action_organization.png b/res/drawable-mdpi-finger/sym_action_organization.png
similarity index 100%
rename from res/drawable-finger/sym_action_organization.png
rename to res/drawable-mdpi-finger/sym_action_organization.png
Binary files differ
diff --git a/res/drawable-finger/sym_action_sms.png b/res/drawable-mdpi-finger/sym_action_sms.png
similarity index 100%
rename from res/drawable-finger/sym_action_sms.png
rename to res/drawable-mdpi-finger/sym_action_sms.png
Binary files differ
diff --git a/res/drawable-finger/sym_action_view_contact.png b/res/drawable-mdpi-finger/sym_action_view_contact.png
similarity index 100%
rename from res/drawable-finger/sym_action_view_contact.png
rename to res/drawable-mdpi-finger/sym_action_view_contact.png
Binary files differ
diff --git a/res/drawable-finger/sym_note.png b/res/drawable-mdpi-finger/sym_note.png
similarity index 100%
rename from res/drawable-finger/sym_note.png
rename to res/drawable-mdpi-finger/sym_note.png
Binary files differ
diff --git a/res/drawable-finger/sym_ringtone.png b/res/drawable-mdpi-finger/sym_ringtone.png
similarity index 100%
rename from res/drawable-finger/sym_ringtone.png
rename to res/drawable-mdpi-finger/sym_ringtone.png
Binary files differ
diff --git a/res/drawable-finger/sym_send_to_voicemail.png b/res/drawable-mdpi-finger/sym_send_to_voicemail.png
similarity index 100%
rename from res/drawable-finger/sym_send_to_voicemail.png
rename to res/drawable-mdpi-finger/sym_send_to_voicemail.png
Binary files differ
diff --git a/res/drawable-finger/title_bar_shadow.9.png b/res/drawable-mdpi-finger/title_bar_shadow.9.png
similarity index 100%
rename from res/drawable-finger/title_bar_shadow.9.png
rename to res/drawable-mdpi-finger/title_bar_shadow.9.png
Binary files differ
diff --git a/res/drawable/ic_contacts_details.png b/res/drawable-mdpi/ic_contacts_details.png
similarity index 100%
rename from res/drawable/ic_contacts_details.png
rename to res/drawable-mdpi/ic_contacts_details.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_import_export.png b/res/drawable-mdpi/ic_menu_import_export.png
new file mode 100644
index 0000000..4f1b608
--- /dev/null
+++ b/res/drawable-mdpi/ic_menu_import_export.png
Binary files differ
diff --git a/res/drawable/ic_menu_mark.png b/res/drawable-mdpi/ic_menu_mark.png
similarity index 100%
rename from res/drawable/ic_menu_mark.png
rename to res/drawable-mdpi/ic_menu_mark.png
Binary files differ
diff --git a/res/drawable/fasttrack.9.png b/res/drawable/quickcontact.9.png
similarity index 100%
rename from res/drawable/fasttrack.9.png
rename to res/drawable/quickcontact.9.png
Binary files differ
diff --git a/res/layout-finger/contacts_list_item.xml b/res/layout-finger/contacts_list_item.xml
index 0e7852e..775e163 100644
--- a/res/layout-finger/contacts_list_item.xml
+++ b/res/layout-finger/contacts_list_item.xml
@@ -58,7 +58,9 @@
<View android:id="@+id/divider"
android:layout_width="1px"
android:layout_height="fill_parent"
- android:background="@*android:drawable/divider_vertical_dark_opaque"
+ android:layout_marginTop="5dip"
+ android:layout_marginBottom="5dip"
+ android:background="@drawable/divider_vertical_dark"
/>
<com.android.contacts.ui.widget.DontPressWithParentImageView android:id="@+id/call_button"
diff --git a/res/layout-finger/contacts_list_item_photo.xml b/res/layout-finger/contacts_list_item_photo.xml
index b15c586..f387502 100644
--- a/res/layout-finger/contacts_list_item_photo.xml
+++ b/res/layout-finger/contacts_list_item_photo.xml
@@ -30,7 +30,7 @@
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
- android:paddingLeft="5dip"
+ android:paddingLeft="4dip"
>
<LinearLayout android:id="@+id/right_side"
@@ -58,7 +58,9 @@
<View android:id="@+id/divider"
android:layout_width="1px"
android:layout_height="fill_parent"
- android:background="@*android:drawable/divider_vertical_dark_opaque"
+ android:layout_marginTop="5dip"
+ android:layout_marginBottom="5dip"
+ android:background="@drawable/divider_vertical_dark"
/>
<com.android.contacts.ui.widget.DontPressWithParentImageView android:id="@+id/call_button"
diff --git a/res/layout-finger/list_item_text_icons.xml b/res/layout-finger/list_item_text_icons.xml
index f87aab8..552d28a 100644
--- a/res/layout-finger/list_item_text_icons.xml
+++ b/res/layout-finger/list_item_text_icons.xml
@@ -43,28 +43,28 @@
android:textAppearance="?android:attr/textAppearanceLarge"
/>
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- >
-
- <TextView android:id="@android:id/text2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:textAppearance="?android:attr/textAppearanceSmall"
- />
-
- <ImageView android:id="@+id/primary_icon"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:paddingLeft="3dip"
- android:src="@drawable/ic_default_number"
- />
- </LinearLayout>
-
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ >
+
+ <TextView android:id="@android:id/text2"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ />
+
+ <ImageView android:id="@+id/primary_icon"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:paddingLeft="3dip"
+ android:src="@drawable/ic_default_number"
+ />
+ </LinearLayout>
+
</LinearLayout>
<ImageView android:id="@+id/presence_icon"
@@ -85,8 +85,10 @@
/>
<View android:id="@+id/divider"
- android:layout_width="1dip"
+ android:layout_width="1px"
android:layout_height="fill_parent"
+ android:layout_marginTop="5dip"
+ android:layout_marginBottom="5dip"
android:background="@drawable/divider_vertical_dark"
/>
diff --git a/res/layout-finger/fasttrack.xml b/res/layout-finger/quickcontact.xml
similarity index 79%
rename from res/layout-finger/fasttrack.xml
rename to res/layout-finger/quickcontact.xml
index 46e5d63..33007f7 100644
--- a/res/layout-finger/fasttrack.xml
+++ b/res/layout-finger/quickcontact.xml
@@ -18,7 +18,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:background="@drawable/fasttrack_drop_shadow">
+ android:background="@drawable/quickcontact_drop_shadow">
<FrameLayout
android:id="@+id/header"
@@ -31,21 +31,21 @@
android:inflatedId="@+id/header_small"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:layout="@layout/fasttrack_header_small" />
+ android:layout="@layout/quickcontact_header_small" />
<ViewStub
android:id="@+id/header_medium"
android:inflatedId="@+id/header_medium"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:layout="@layout/fasttrack_header_med" />
+ android:layout="@layout/quickcontact_header_med" />
<ViewStub
android:id="@+id/header_large"
android:inflatedId="@+id/header_large"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:layout="@layout/fasttrack_header_large" />
+ android:layout="@layout/quickcontact_header_large" />
</FrameLayout>
@@ -55,11 +55,11 @@
android:layout_height="wrap_content"
android:layout_below="@id/header"
android:fadingEdgeLength="0dip"
- android:background="@drawable/fasttrack_slider_background"
+ android:background="@drawable/quickcontact_slider_background"
android:scrollbars="none">
<LinearLayout
- android:id="@+id/fasttrack"
+ android:id="@+id/quickcontact"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="4dip"
@@ -69,12 +69,12 @@
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:src="@drawable/fasttrack_slider_grip_left" />
+ android:src="@drawable/quickcontact_slider_grip_left" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:src="@drawable/fasttrack_slider_grip_right" />
+ android:src="@drawable/quickcontact_slider_grip_right" />
</LinearLayout>
@@ -85,14 +85,14 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/scroll"
- android:background="@drawable/fasttrack_bottom_frame" />
+ android:background="@drawable/quickcontact_bottom_frame" />
<LinearLayout
android:id="@+id/footer_disambig"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/scroll"
- android:background="@drawable/fasttrack_disambig_bottom_bg"
+ android:background="@drawable/quickcontact_disambig_bottom_bg"
android:orientation="vertical"
android:visibility="gone">
@@ -101,8 +101,8 @@
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
- android:background="@color/fasttrack_disambig"
- android:divider="@drawable/fasttrack_disambig_divider"
+ android:background="@color/quickcontact_disambig"
+ android:divider="@drawable/quickcontact_disambig_divider"
android:cacheColorHint="@null" />
<CheckBox
@@ -114,9 +114,9 @@
android:minHeight="60dip"
android:textColor="#f000"
android:textStyle="bold"
- android:text="@string/fasttrack_remember_choice"
+ android:text="@string/quickcontact_remember_choice"
android:textAppearance="?android:attr/textAppearanceSmallInverse"
- android:button="@drawable/fasttrack_disambig_checkbox" />
+ android:button="@drawable/quickcontact_disambig_checkbox" />
</LinearLayout>
@@ -124,7 +124,7 @@
android:id="@+id/arrow_up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:src="@drawable/fasttrack_arrow_up" />
+ android:src="@drawable/quickcontact_arrow_up" />
<ImageView
android:id="@+id/arrow_down"
@@ -132,6 +132,6 @@
android:layout_height="wrap_content"
android:layout_marginTop="-1dip"
android:layout_below="@id/footer"
- android:src="@drawable/fasttrack_arrow_down" />
+ android:src="@drawable/quickcontact_arrow_down" />
</RelativeLayout>
diff --git a/res/layout-finger/fasttrack_header_large.xml b/res/layout-finger/quickcontact_header_large.xml
similarity index 94%
rename from res/layout-finger/fasttrack_header_large.xml
rename to res/layout-finger/quickcontact_header_large.xml
index f950349..c94f1ad 100644
--- a/res/layout-finger/fasttrack_header_large.xml
+++ b/res/layout-finger/quickcontact_header_large.xml
@@ -20,7 +20,7 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="87dip"
- android:background="@drawable/fasttrack_top_frame"
+ android:background="@drawable/quickcontact_top_frame"
android:gravity="center_vertical"
android:orientation="horizontal">
@@ -57,7 +57,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="15dip"
- android:src="@drawable/fasttrack_slider_presence_active"
+ android:src="@drawable/quickcontact_slider_presence_active"
android:scaleType="centerInside" />
</LinearLayout>
diff --git a/res/layout-finger/fasttrack_header_med.xml b/res/layout-finger/quickcontact_header_med.xml
similarity index 93%
rename from res/layout-finger/fasttrack_header_med.xml
rename to res/layout-finger/quickcontact_header_med.xml
index 98e9233..3533502 100644
--- a/res/layout-finger/fasttrack_header_med.xml
+++ b/res/layout-finger/quickcontact_header_med.xml
@@ -20,7 +20,7 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="45dip"
- android:background="@drawable/fasttrack_top_frame"
+ android:background="@drawable/quickcontact_top_frame"
android:gravity="center_vertical"
android:orientation="horizontal">
@@ -40,7 +40,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dip"
- android:src="@drawable/fasttrack_frame_divider_med" />
+ android:src="@drawable/quickcontact_frame_divider_med" />
<ImageView
android:id="@+id/source"
diff --git a/res/layout-finger/fasttrack_header_small.xml b/res/layout-finger/quickcontact_header_small.xml
similarity index 93%
rename from res/layout-finger/fasttrack_header_small.xml
rename to res/layout-finger/quickcontact_header_small.xml
index feb49f2..3711dcc 100644
--- a/res/layout-finger/fasttrack_header_small.xml
+++ b/res/layout-finger/quickcontact_header_small.xml
@@ -19,5 +19,5 @@
android:id="@+id/header_small"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:background="@drawable/fasttrack_top_frame"
+ android:background="@drawable/quickcontact_top_frame"
android:orientation="horizontal" />
diff --git a/res/layout-finger/fasttrack_item.xml b/res/layout-finger/quickcontact_item.xml
similarity index 94%
rename from res/layout-finger/fasttrack_item.xml
rename to res/layout-finger/quickcontact_item.xml
index 58d85aa..819915d 100644
--- a/res/layout-finger/fasttrack_item.xml
+++ b/res/layout-finger/quickcontact_item.xml
@@ -25,4 +25,4 @@
android:scaleType="centerInside"
android:focusable="true"
android:clickable="true"
- android:background="@drawable/fasttrack_slider_btn" />
+ android:background="@drawable/quickcontact_slider_btn" />
diff --git a/res/layout-finger/fasttrack_resolve_item.xml b/res/layout-finger/quickcontact_resolve_item.xml
similarity index 100%
rename from res/layout-finger/fasttrack_resolve_item.xml
rename to res/layout-finger/quickcontact_resolve_item.xml
diff --git a/res/menu/edit.xml b/res/menu/edit.xml
index 3a24f27..658a567 100644
--- a/res/menu/edit.xml
+++ b/res/menu/edit.xml
@@ -47,4 +47,13 @@
android:icon="@android:drawable/ic_menu_delete"
android:title="@string/removePicture" />
+ <item
+ android:id="@+id/menu_split"
+ android:icon="@drawable/ic_menu_merge"
+ android:title="@string/menu_splitAggregate" />
+
+ <item
+ android:id="@+id/menu_join"
+ android:icon="@drawable/ic_menu_merge"
+ android:title="@string/menu_joinAggregate" />
</menu>
diff --git a/res/menu/list.xml b/res/menu/list.xml
index b5a2750..b8f9b76 100644
--- a/res/menu/list.xml
+++ b/res/menu/list.xml
@@ -38,7 +38,7 @@
<item
android:id="@+id/menu_import_export"
- android:icon="@drawable/ic_menu_export_contact"
+ android:icon="@drawable/ic_menu_import_export"
android:title="@string/menu_import_export" />
</menu>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 2b3c3fc..79c7f19 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"Aplikace potřebná k provedení této akce nebyla nalezena"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Zapamatovat tuto volbu"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Neznámé"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"Aplikace potřebná k provedení této akce nebyla nalezena"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Zapamatovat tuto volbu"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Neznámé"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Účty"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 88d3563..1a3d060 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"Der blev ikke fundet noget program til denne handling"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Husk dette valg"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Ukendte"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"Der blev ikke fundet noget program til denne handling"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Husk dette valg"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Ukendte"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Konti"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index b45e33a..e13626a 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"Für diese Aktion wurde keine Anwendung gefunden."</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Diese Auswahl speichern"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Unbekannt"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"Für diese Aktion wurde keine Anwendung gefunden."</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Diese Auswahl speichern"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Unbekannt"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Konten"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index ce6be87..71bb3bd 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"Δεν υπάρχει εφαρμογή για τη διαχείριση αυτής της ενέργειας"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Διατήρηση αυτής της ρύθμισης"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Άγνωστος"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"Δεν υπάρχει εφαρμογή για τη διαχείριση αυτής της ενέργειας"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Διατήρηση αυτής της ρύθμισης"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Άγνωστος"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Λογαριασμοί"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index d051af8..8372650 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"No se encontró aplicación para permitir esta acción"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Recuerda esta opción"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Desconocido"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"No se encontró aplicación para permitir esta acción"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Recuerda esta opción"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Desconocido"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Cuentas"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index ad45fb6..3ea81a0 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"No se ha encontrado ninguna aplicación que pueda realizar esta acción."</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Recordar esta opción"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Desconocido"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"No se ha encontrado ninguna aplicación que pueda realizar esta acción."</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Recordar esta opción"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Desconocido"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Cuentas"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 26b026b..0aba70f 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"Aucune application pour gérer cette action"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Mémoriser ce choix"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Inconnu"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"Aucune application pour gérer cette action"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Mémoriser ce choix"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Inconnu"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Comptes"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 5797d61..9e28302 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"Nessuna applicazione trovata in grado di gestire questa azione"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Memorizza questa scelta"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Sconosciuto"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"Nessuna applicazione trovata in grado di gestire questa azione"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Memorizza questa scelta"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Sconosciuto"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Account"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 1e539dd..b6abc9a 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"この操作を行うアプリケーションが見つかりません"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"この選択を保存"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"不明"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"この操作を行うアプリケーションが見つかりません"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"この選択を保存"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"不明"</string>
<string name="menu_accounts" msgid="8499114602017077970">"アカウント"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index cd45ca9..f07aec0 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"이 작업을 처리하는 응용프로그램을 찾을 수 없습니다."</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"이 선택사항 저장"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"알 수 없음"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"이 작업을 처리하는 응용프로그램을 찾을 수 없습니다."</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"이 선택사항 저장"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"알 수 없음"</string>
<string name="menu_accounts" msgid="8499114602017077970">"계정"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 57d17c1..e04b8da 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"Ingen programmer som kan utføre denne handlingen ble funnet"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Husk dette valget"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Ukjent"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"Ingen programmer som kan utføre denne handlingen ble funnet"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Husk dette valget"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Ukjent"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Kontoer"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index d2ca5b3..e3a6ac8 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"Er is geen toepassing gevonden om deze actie uit te voeren"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Deze keuze onthouden"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Onbekend"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"Er is geen toepassing gevonden om deze actie uit te voeren"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Deze keuze onthouden"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Onbekend"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Accounts"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 02797d5..06523ca 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"Nie znaleziono aplikacji do obsługi tej akcji"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Zapamiętaj ten wybór"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Nieznane"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"Nie znaleziono aplikacji do obsługi tej akcji"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Zapamiętaj ten wybór"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Nieznane"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Konta"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 5802679..3de0004 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"Não foram encontradas aplicações para executar esta acção"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Memorizar esta escolha"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Desconhecido"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"Não foram encontradas aplicações para executar esta acção"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Memorizar esta escolha"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Desconhecido"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Contas"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 86423f1..6438046 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"Nenhum aplicativo foi encontrado para executar esta ação."</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Lembrar desta escolha"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Desconhecido"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"Nenhum aplicativo foi encontrado para executar esta ação."</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Lembrar desta escolha"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Desconhecido"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Contas"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index aa5d2f8..76256f4 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"Отсутствует приложение для обработки этого действия"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Запомнить выбранное"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Неизвестно"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"Отсутствует приложение для обработки этого действия"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Запомнить выбранное"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Неизвестно"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Аккаунты"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 50d9f8d..728fbca 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"Inget program som kan hantera åtgärden hittades"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Kom ihåg det här valet"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Okänd"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"Inget program som kan hantera åtgärden hittades"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Kom ihåg det här valet"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Okänd"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Konton"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index c8ae19c..1df1655 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"Bu eylemi gerçekleştirecek bir uygulama bulunamadı"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Bu tercihi anımsa"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"Bilinmiyor"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"Bu eylemi gerçekleştirecek bir uygulama bulunamadı"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Bu tercihi anımsa"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"Bilinmiyor"</string>
<string name="menu_accounts" msgid="8499114602017077970">"Hesaplar"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 4ee3b92..cf30983 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"未找到可处理此操作的应用程序"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"记住此选择"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"未知"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"未找到可处理此操作的应用程序"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"记住此选择"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"未知"</string>
<string name="menu_accounts" msgid="8499114602017077970">"帐户"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index e0f04cf..df5a614 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -281,9 +281,9 @@
<skip />
<!-- no translation found for make_primary (5829291915305113983) -->
<skip />
- <string name="fasttrack_missing_app" msgid="1181287640680679441">"找不到可以處理這個動作的應用程式"</string>
- <string name="fasttrack_remember_choice" msgid="2858356075887897116">"記住這個選擇"</string>
- <string name="fasttrack_missing_name" msgid="7806083820928955853">"不明"</string>
+ <string name="quickcontact_missing_app" msgid="1181287640680679441">"找不到可以處理這個動作的應用程式"</string>
+ <string name="quickcontact_remember_choice" msgid="2858356075887897116">"記住這個選擇"</string>
+ <string name="quickcontact_missing_name" msgid="7806083820928955853">"不明"</string>
<string name="menu_accounts" msgid="8499114602017077970">"帳戶"</string>
<!-- no translation found for menu_import_export (3765725645491577190) -->
<skip />
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 12630c0..880c269 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -18,6 +18,6 @@
<color name="textColorIconOverlay">#fff</color>
<color name="textColorIconOverlayShadow">#000</color>
<color name="sect_secondary">#4fff</color>
- <color name="fasttrack_disambig">#f2f2f2</color>
- <color name="fasttrack_disambig_divider">#afafaf</color>
+ <color name="quickcontact_disambig">#f2f2f2</color>
+ <color name="quickcontact_disambig_divider">#afafaf</color>
</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 4361fd4..845c3dc 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -15,7 +15,7 @@
-->
<resources>
- <dimen name="fasttrack_shadow">37dip</dimen>
+ <dimen name="quickcontact_shadow">37dip</dimen>
<dimen name="edit_photo_size">76dip</dimen>
<!-- The height of the ScrollingTabWidget -->
diff --git a/res/values/ids.xml b/res/values/ids.xml
index cf1d419..92b0eac 100644
--- a/res/values/ids.xml
+++ b/res/values/ids.xml
@@ -41,6 +41,12 @@
<item type="id" name="dialog_io_exception" />
<item type="id" name="dialog_error_with_message" />
+ <!-- For ContactsListActivity -->
+ <item type="id" name="dialog_delete_contact_confirmation" />
+ <item type="id" name="dialog_cannot_delete_readonly_contact" />
+ <item type="id" name="dialog_multiple_contact_delete_confirmation" />
+ <item type="id" name="dialog_readonly_contact_delete_confirmation" />
+
<!-- For ExportVCard -->
<item type="id" name="dialog_export_confirmation" />
<item type="id" name="dialog_fail_to_export_with_reason" />
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 407d1c5..60f784d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -165,7 +165,16 @@
<!-- Confirmation dialog title after users selects to delete a contact. -->
<string name="deleteConfirmation_title">Delete</string>
- <!-- Confirmation dialog contents after users selects to delete a contact. -->
+ <!-- Warning dialog contents after users selects to delete a ReadOnly contact. -->
+ <string name="readOnlyContactWarning">You cannot delete contacts from read-only accounts.</string>
+
+ <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+ <string name="readOnlyContactDeleteConfirmation">This contact contains information from multiple accounts. The information from read-only accounts will not be deleted.</string>
+
+ <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+ <string name="multipleContactDeleteConfirmation">Deleting this contact will delete information from multiple accounts.</string>
+
+ <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
<string name="deleteConfirmation">This contact will be deleted.</string>
<!-- Menu item to indicate you are done editing a contact and want to save the changes you've made -->
@@ -909,15 +918,15 @@
<!-- Shown as a toast when the user taps on a Fast-Track icon, and no application
was found that could perform the selected action -->
- <string name="fasttrack_missing_app">No application found to handle this action</string>
+ <string name="quickcontact_missing_app">No application found to handle this action</string>
<!-- Shown as the checkbox label that, when checked, will store remember the
selected choice and shortcut to it in the future. For example, this would
make a selected phone number the default. -->
- <string name="fasttrack_remember_choice">Remember this choice</string>
+ <string name="quickcontact_remember_choice">Remember this choice</string>
<!-- Shown as the header name for a person when the name is missing or unknown. -->
- <string name="fasttrack_missing_name">Unknown</string>
+ <string name="quickcontact_missing_name">Unknown</string>
<!-- The menu item to open the list of accounts -->
<string name="menu_accounts">Accounts</string>
@@ -945,6 +954,8 @@
<string name="organizationLabelsGroup">Organization</string>
<!-- Header that expands to list all website types when editing a website of a contact -->
<string name="websiteLabelsGroup">Website</string>
+ <!-- Header that expands to list all event types when editing an event of a contact -->
+ <string name="eventLabelsGroup">Event</string>
<!-- Single-character overlay for home phone numbers when creating desktop shortcuts -->
<string name="type_short_home">H</string>
@@ -962,7 +973,7 @@
<!-- Shown as the header title over a collapsible section that, by default, hides
secondary contact detail edit fields, such as birthday. -->
- <string name="edit_secondary_collapse">Secondary details</string>
+ <string name="edit_secondary_collapse">More</string>
<string name="dialog_primary_name">Primary name</string>
<string name="dialog_new_contact_account">Create contact under account</string>
@@ -1156,7 +1167,7 @@
<string name="split_label">Split</string>
<!-- The explanation of what "split" will do. This needs word-smithing. -->
<string name="split_explanation">Make this data its own contact.</string>
-
+
<!-- Formatting string for account name -->
<string name="account_name_format">From <xliff:g id="source" example="Gmail">%1$s</xliff:g> account: <xliff:g id="account" example="user@gmail.com">%2$s</xliff:g></string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 05c0916..8c5ae35 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -52,15 +52,15 @@
<item name="android:windowContentOverlay">@null</item>
</style>
- <style name="FullyTranslucent.FastTrack">
+ <style name="FullyTranslucent.QuickContact">
<!-- This is a hack because we want to be able to animate away the
- FastTrack window, and we close its containing activity at the
+ QuickContact window, and we close its containing activity at the
same time. So put in a dummy animation so this guy sticks around
while the fast track window is animating. -->
<item name="android:windowAnimationStyle">@style/DummyAnimation</item>
</style>
- <style name="FastTrack">
+ <style name="QuickContact">
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>
@@ -71,14 +71,14 @@
-->
</style>
- <style name="FastTrackAboveAnimation">
- <item name="android:windowEnterAnimation">@anim/fasttrack_above_enter</item>
- <item name="android:windowExitAnimation">@anim/fasttrack_above_exit</item>
+ <style name="QuickContactAboveAnimation">
+ <item name="android:windowEnterAnimation">@anim/quickcontact_above_enter</item>
+ <item name="android:windowExitAnimation">@anim/quickcontact_above_exit</item>
</style>
- <style name="FastTrackBelowAnimation">
- <item name="android:windowEnterAnimation">@anim/fasttrack_below_enter</item>
- <item name="android:windowExitAnimation">@anim/fasttrack_below_exit</item>
+ <style name="QuickContactBelowAnimation">
+ <item name="android:windowEnterAnimation">@anim/quickcontact_below_enter</item>
+ <item name="android:windowExitAnimation">@anim/quickcontact_below_exit</item>
</style>
<style name="DummyAnimation">
diff --git a/src/com/android/contacts/ContactOptionsActivity.java b/src/com/android/contacts/ContactOptionsActivity.java
index fbe4604..f93ddf8 100644
--- a/src/com/android/contacts/ContactOptionsActivity.java
+++ b/src/com/android/contacts/ContactOptionsActivity.java
@@ -52,13 +52,13 @@
private TextView mRingtoneTitle;
private CheckBox mSendToVoicemailCheckbox;
- private Uri mAggregateUri;
+ private Uri mLookupUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- mAggregateUri = getIntent().getData();
+ mLookupUri = getIntent().getData();
setContentView(R.layout.contact_options);
@@ -176,7 +176,7 @@
private boolean loadData() {
Cursor c =
- getContentResolver().query(mAggregateUri, AGGREGATES_PROJECTION, null, null, null);
+ getContentResolver().query(mLookupUri, AGGREGATES_PROJECTION, null, null, null);
try {
if (!c.moveToFirst()) {
return false;
@@ -195,7 +195,7 @@
ContentValues values = new ContentValues(2);
values.put(Contacts.CUSTOM_RINGTONE, mCustomRingtone);
values.put(Contacts.SEND_TO_VOICEMAIL, mSendToVoicemail);
- getContentResolver().update(mAggregateUri, values, null, null);
+ getContentResolver().update(mLookupUri, values, null, null);
}
}
diff --git a/src/com/android/contacts/ContactsListActivity.java b/src/com/android/contacts/ContactsListActivity.java
index c228178..5e1638f 100644
--- a/src/com/android/contacts/ContactsListActivity.java
+++ b/src/com/android/contacts/ContactsListActivity.java
@@ -102,8 +102,11 @@
import android.widget.TextView;
import android.widget.AbsListView.OnScrollListener;
+import com.android.contacts.model.ContactsSource;
+
import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -186,8 +189,8 @@
static final int MODE_MASK_NO_DATA = 0x04000000;
/** Mask for showing a call button in the list */
static final int MODE_MASK_SHOW_CALL_BUTTON = 0x02000000;
- /** Mask to disable fasttrack (images will show as normal images) */
- static final int MODE_MASK_DISABLE_FASTTRACK = 0x01000000;
+ /** Mask to disable quickcontact (images will show as normal images) */
+ static final int MODE_MASK_DISABLE_QUIKCCONTACT = 0x01000000;
/** Mask to show the total number of contacts at the top */
static final int MODE_MASK_SHOW_NUMBER_OF_CONTACTS = 0x00800000;
@@ -205,16 +208,16 @@
static final int MODE_STREQUENT = 35 | MODE_MASK_SHOW_PHOTOS | MODE_MASK_SHOW_CALL_BUTTON;
/** Show all contacts and pick them when clicking */
static final int MODE_PICK_CONTACT = 40 | MODE_MASK_PICKER | MODE_MASK_SHOW_PHOTOS
- | MODE_MASK_DISABLE_FASTTRACK;
+ | MODE_MASK_DISABLE_QUIKCCONTACT;
/** Show all contacts as well as the option to create a new one */
static final int MODE_PICK_OR_CREATE_CONTACT = 42 | MODE_MASK_PICKER | MODE_MASK_CREATE_NEW
- | MODE_MASK_SHOW_PHOTOS | MODE_MASK_DISABLE_FASTTRACK;
+ | MODE_MASK_SHOW_PHOTOS | MODE_MASK_DISABLE_QUIKCCONTACT;
/** Show all people through the legacy provider and pick them when clicking */
static final int MODE_LEGACY_PICK_PERSON = 43 | MODE_MASK_PICKER | MODE_MASK_SHOW_PHOTOS
- | MODE_MASK_DISABLE_FASTTRACK;
+ | MODE_MASK_DISABLE_QUIKCCONTACT;
/** Show all people through the legacy provider as well as the option to create a new one */
- static final int MODE_LEGACY_PICK_OR_CREATE_PERSON = 44 | MODE_MASK_PICKER | MODE_MASK_CREATE_NEW
- | MODE_MASK_SHOW_PHOTOS | MODE_MASK_DISABLE_FASTTRACK;
+ static final int MODE_LEGACY_PICK_OR_CREATE_PERSON = 44 | MODE_MASK_PICKER
+ | MODE_MASK_CREATE_NEW | MODE_MASK_SHOW_PHOTOS | MODE_MASK_DISABLE_QUIKCCONTACT;
/** Show all contacts and pick them when clicking, and allow creating a new contact */
static final int MODE_INSERT_OR_EDIT_CONTACT = 45 | MODE_MASK_PICKER | MODE_MASK_CREATE_NEW;
/** Show all phone numbers and pick them when clicking */
@@ -236,7 +239,7 @@
/** Show join suggestions followed by an A-Z list */
static final int MODE_JOIN_CONTACT = 70 | MODE_MASK_PICKER | MODE_MASK_NO_PRESENCE
- | MODE_MASK_NO_DATA | MODE_MASK_SHOW_PHOTOS | MODE_MASK_DISABLE_FASTTRACK;
+ | MODE_MASK_NO_DATA | MODE_MASK_SHOW_PHOTOS | MODE_MASK_DISABLE_QUIKCCONTACT;
/** Maximum number of suggestions shown for joining aggregates */
static final int MAX_SUGGESTIONS = 4;
@@ -306,6 +309,12 @@
ContactMethods.DATA, //3
People.DISPLAY_NAME, // 4
};
+ static final String[] RAW_CONTACTS_PROJECTION = new String[] {
+ RawContacts._ID, //0
+ RawContacts.CONTACT_ID, //1
+ RawContacts.ACCOUNT_TYPE, //2
+ };
+
static final int POSTAL_ID_COLUMN_INDEX = 0;
static final int POSTAL_TYPE_COLUMN_INDEX = 1;
static final int POSTAL_LABEL_COLUMN_INDEX = 2;
@@ -324,6 +333,7 @@
private String mQuery;
private boolean mJustCreated;
private boolean mSyncEnabled;
+ private Uri mSelectedContactUri;
// private boolean mDisplayAll;
private boolean mDisplayOnlyPhones;
@@ -332,6 +342,10 @@
private long mQueryAggregateId;
+ private ArrayList<Long> mWritableRawContactIds = new ArrayList<Long>();
+ private int mWritableSourcesCnt;
+ private int mReadOnlySourcesCnt;
+
/**
* Used to keep track of the scroll state of the list.
*/
@@ -388,7 +402,15 @@
}
public void onClick(DialogInterface dialog, int which) {
- getContentResolver().delete(mUri, null, null);
+ if (mReadOnlySourcesCnt > 0) {
+ for (long rawContactIdToDelete: mWritableRawContactIds) {
+ final Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI,
+ rawContactIdToDelete);
+ getContentResolver().delete(rawContactUri, null, null);
+ }
+ } else {
+ getContentResolver().delete(mUri, null, null);
+ }
}
}
@@ -854,11 +876,44 @@
}
case R.id.dialog_sdcard_not_found: {
AlertDialog.Builder builder = new AlertDialog.Builder(this)
- .setTitle(R.string.no_sdcard_title)
- .setIcon(android.R.drawable.ic_dialog_alert)
- .setMessage(R.string.no_sdcard_message)
- .setPositiveButton(android.R.string.ok, null);
+ .setTitle(R.string.no_sdcard_title)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setMessage(R.string.no_sdcard_message)
+ .setPositiveButton(android.R.string.ok, null);
+ break;
}
+ case R.id.dialog_delete_contact_confirmation: {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this)
+ .setTitle(R.string.deleteConfirmation_title)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setMessage(R.string.deleteConfirmation)
+ .setNegativeButton(android.R.string.cancel, null)
+ .setPositiveButton(android.R.string.ok, new DeleteClickListener(mSelectedContactUri));
+ break;
+ }
+ case R.id.dialog_cannot_delete_readonly_contact: {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this)
+ .setTitle(R.string.deleteConfirmation_title)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setMessage(R.string.readOnlyContactWarning)
+ .setPositiveButton(android.R.string.ok, null);
+ break;
+ }
+ case R.id.dialog_readonly_contact_delete_confirmation: {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this)
+ .setTitle(R.string.deleteConfirmation_title)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setMessage(R.string.readOnlyContactDeleteConfirmation)
+ .setPositiveButton(android.R.string.ok, new DeleteClickListener(mSelectedContactUri));
+ }
+ case R.id.dialog_multiple_contact_delete_confirmation: {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this)
+ .setTitle(R.string.deleteConfirmation_title)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setMessage(R.string.multipleContactDeleteConfirmation)
+ .setPositiveButton(android.R.string.ok, new DeleteClickListener(mSelectedContactUri));
+ }
+
}
return super.onCreateDialog(id);
}
@@ -1061,8 +1116,8 @@
}
case MENU_ITEM_DELETE: {
- final Uri selectedUri = getContactUri(info.position);
- doContactDelete(selectedUri);
+ mSelectedContactUri = getContactUri(info.position);
+ doContactDelete();
return true;
}
}
@@ -1082,8 +1137,8 @@
case KeyEvent.KEYCODE_DEL: {
final int position = getListView().getSelectedItemPosition();
if (position != ListView.INVALID_POSITION) {
- final Uri selectedUri = getContactUri(position);
- doContactDelete(selectedUri);
+ mSelectedContactUri = getContactUri(position);
+ doContactDelete();
return true;
}
break;
@@ -1096,14 +1151,41 @@
/**
* Prompt the user before deleting the given {@link Contacts} entry.
*/
- protected void doContactDelete(Uri contactUri) {
- new AlertDialog.Builder(ContactsListActivity.this)
- .setTitle(R.string.deleteConfirmation_title)
- .setIcon(android.R.drawable.ic_dialog_alert)
- .setMessage(R.string.deleteConfirmation)
- .setNegativeButton(android.R.string.cancel, null)
- .setPositiveButton(android.R.string.ok, new DeleteClickListener(contactUri))
- .show();
+ protected void doContactDelete() {
+ mReadOnlySourcesCnt = 0;
+ mWritableSourcesCnt = 0;
+ mWritableRawContactIds.clear();
+
+ if (mSelectedContactUri != null) {
+ Cursor c = getContentResolver().query(RawContacts.CONTENT_URI,
+ RAW_CONTACTS_PROJECTION, RawContacts.CONTACT_ID + "="
+ + ContentUris.parseId(mSelectedContactUri), null, null);
+ Sources sources = Sources.getInstance(ContactsListActivity.this);
+ if (c != null) {
+ while (c.moveToNext()) {
+ final String accountType = c.getString(2);
+ final long rawContactId = c.getLong(0);
+ ContactsSource contactsSource = sources.getInflatedSource(accountType,
+ ContactsSource.LEVEL_SUMMARY);
+ if (contactsSource != null && contactsSource.readOnly) {
+ mReadOnlySourcesCnt += 1;
+ } else {
+ mWritableSourcesCnt += 1;
+ mWritableRawContactIds.add(rawContactId);
+ }
+ }
+ }
+ c.close();
+ if (mReadOnlySourcesCnt > 0 && mWritableSourcesCnt > 0) {
+ showDialog(R.id.dialog_readonly_contact_delete_confirmation);
+ } else if (mReadOnlySourcesCnt > 0 && mWritableSourcesCnt == 0) {
+ showDialog(R.id.dialog_cannot_delete_readonly_contact);
+ } else if (mReadOnlySourcesCnt == 0 && mWritableSourcesCnt > 1) {
+ showDialog(R.id.dialog_multiple_contact_delete_confirmation);
+ } else {
+ showDialog(R.id.dialog_delete_contact_confirmation);
+ }
+ }
}
@Override
@@ -1918,7 +2000,7 @@
public CharArrayBuffer dataBuffer = new CharArrayBuffer(128);
public ImageView presenceView;
public QuickContactBadge photoView;
- public ImageView nonFastTrackPhotoView;
+ public ImageView nonQuickContactPhotoView;
}
final static class PhotoInfo {
@@ -2138,7 +2220,8 @@
parent, false);
int stringId = mDisplayOnlyPhones ? R.string.listTotalPhoneContacts
: R.string.listTotalAllContacts;
- totalContacts.setText(getString(stringId, getCount()));
+
+ totalContacts.setText(getString(stringId, getRealCount()));
return totalContacts;
}
@@ -2221,7 +2304,7 @@
cache.dataView = (TextView) view.findViewById(R.id.data);
cache.presenceView = (ImageView) view.findViewById(R.id.presence);
cache.photoView = (QuickContactBadge) view.findViewById(R.id.photo);
- cache.nonFastTrackPhotoView = (ImageView) view.findViewById(R.id.noQuickContactPhoto);
+ cache.nonQuickContactPhotoView = (ImageView) view.findViewById(R.id.noQuickContactPhoto);
view.setTag(cache);
return view;
@@ -2288,7 +2371,7 @@
// Set the photo, if requested
if (mDisplayPhotos) {
- boolean useFastTrack = (mMode & MODE_MASK_DISABLE_FASTTRACK) == 0;
+ boolean useQuickContact = (mMode & MODE_MASK_DISABLE_QUIKCCONTACT) == 0;
long photoId = 0;
if (!cursor.isNull(SUMMARY_PHOTO_ID_COLUMN_INDEX)) {
@@ -2296,18 +2379,18 @@
}
ImageView viewToUse;
- if (useFastTrack) {
+ if (useQuickContact) {
viewToUse = cache.photoView;
// Build soft lookup reference
final long contactId = cursor.getLong(SUMMARY_ID_COLUMN_INDEX);
final String lookupKey = cursor.getString(SUMMARY_LOOKUP_KEY);
cache.photoView.assignContactUri(Contacts.getLookupUri(contactId, lookupKey));
cache.photoView.setVisibility(View.VISIBLE);
- cache.nonFastTrackPhotoView.setVisibility(View.INVISIBLE);
+ cache.nonQuickContactPhotoView.setVisibility(View.INVISIBLE);
} else {
- viewToUse = cache.nonFastTrackPhotoView;
+ viewToUse = cache.nonQuickContactPhotoView;
cache.photoView.setVisibility(View.INVISIBLE);
- cache.nonFastTrackPhotoView.setVisibility(View.VISIBLE);
+ cache.nonQuickContactPhotoView.setVisibility(View.VISIBLE);
}
@@ -2570,19 +2653,33 @@
@Override
public int getCount() {
+ if (!mDataValid) {
+ return 0;
+ }
+ int superCount = super.getCount();
+ if ((mMode & MODE_MASK_SHOW_NUMBER_OF_CONTACTS) != 0) {
+ superCount++;
+ }
if (mSuggestionsCursorCount != 0) {
// When showing suggestions, we have 2 additional list items: the "Suggestions"
// and "All contacts" headers.
- return mSuggestionsCursorCount + super.getCount() + 2;
+ return mSuggestionsCursorCount + superCount + 2;
}
else if (mFrequentSeparatorPos != ListView.INVALID_POSITION) {
// When showing strequent list, we have an additional list item - the separator.
- return super.getCount() + 1;
+ return superCount + 1;
} else {
- return super.getCount();
+ return superCount;
}
}
+ /**
+ * Gets the actual count of contacts and excludes all the headers.
+ */
+ public int getRealCount() {
+ return super.getCount();
+ }
+
private int getRealPosition(int pos) {
if ((mMode & MODE_MASK_SHOW_NUMBER_OF_CONTACTS) != 0) {
pos--;
diff --git a/src/com/android/contacts/ViewContactActivity.java b/src/com/android/contacts/ViewContactActivity.java
index 8172423..0e03cf3 100644
--- a/src/com/android/contacts/ViewContactActivity.java
+++ b/src/com/android/contacts/ViewContactActivity.java
@@ -99,6 +99,8 @@
private static final boolean SHOW_SEPARATORS = false;
private static final int DIALOG_CONFIRM_DELETE = 1;
+ private static final int DIALOG_CONFIRM_READONLY_DELETE = 2;
+ private static final int DIALOG_CONFIRM_MULTIPLE_DELETE = 3;
private static final int REQUEST_JOIN_CONTACT = 1;
private static final int REQUEST_EDIT_CONTACT = 2;
@@ -108,7 +110,6 @@
private static final String SPLIT_MIMETYPE = "split_mimetype";
protected Uri mLookupUri;
- private Uri mUri;
private ContentResolver mResolver;
private ViewAdapter mAdapter;
private int mNumPhoneNumbers = 0;
@@ -155,6 +156,9 @@
private static final String SAVED_STATE_TABS_VISIBLE_KEY = "tabsVisibleKey";
protected Long mSelectedRawContactId = null;
+ protected int mReadOnlySourcesCnt;
+ protected int mWritableSourcesCnt;
+ protected ArrayList<Long> mWritableRawContactIds = new ArrayList<Long>();
private static final int TOKEN_QUERY = 0;
@@ -174,7 +178,15 @@
public void onClick(DialogInterface dialog, int which) {
closeCursor();
- getContentResolver().delete(mUri, null, null);
+ if (mReadOnlySourcesCnt > 0) {
+ for (long rawContactIdToDelete: mWritableRawContactIds) {
+ final Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI,
+ rawContactIdToDelete);
+ getContentResolver().delete(rawContactUri, null, null);
+ }
+ } else {
+ getContentResolver().delete(mLookupUri, null, null);
+ }
finish();
}
@@ -298,6 +310,24 @@
.setPositiveButton(android.R.string.ok, this)
.setCancelable(false)
.create();
+ case DIALOG_CONFIRM_READONLY_DELETE:
+ return new AlertDialog.Builder(this)
+ .setTitle(R.string.deleteConfirmation_title)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setMessage(R.string.readOnlyContactDeleteConfirmation)
+ .setNegativeButton(android.R.string.cancel, null)
+ .setPositiveButton(android.R.string.ok, this)
+ .setCancelable(false)
+ .create();
+ case DIALOG_CONFIRM_MULTIPLE_DELETE:
+ return new AlertDialog.Builder(this)
+ .setTitle(R.string.deleteConfirmation_title)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setMessage(R.string.multipleContactDeleteConfirmation)
+ .setNegativeButton(android.R.string.cancel, null)
+ .setPositiveButton(android.R.string.ok, this)
+ .setCancelable(false)
+ .create();
}
return null;
}
@@ -492,6 +522,14 @@
// Empty
}
+ private long getRefreshedContactId() {
+ Uri freshContactUri = Contacts.lookupContact(getContentResolver(), mLookupUri);
+ if (freshContactUri != null) {
+ return ContentUris.parseId(freshContactUri);
+ }
+ return -1;
+ }
+
private ArrayList<Entity> readEntities(EntityIterator iterator) {
ArrayList<Entity> entities = new ArrayList<Entity>();
try {
@@ -507,15 +545,15 @@
private void startEntityQuery() {
closeCursor();
- mUri = null;
+ Uri uri = null;
if (mLookupUri != null) {
mLookupUri = Contacts.getLookupUri(getContentResolver(), mLookupUri);
if (mLookupUri != null) {
- mUri = Contacts.lookupContact(getContentResolver(), mLookupUri);
+ uri = Contacts.lookupContact(getContentResolver(), mLookupUri);
}
}
- if (mUri == null) {
+ if (uri == null) {
// TODO either figure out a way to prevent a flash of black background or
// use some other UI than a toast
@@ -525,11 +563,11 @@
return;
}
- mCursor = mResolver.query(Uri.withAppendedPath(mUri, Contacts.Data.CONTENT_DIRECTORY),
+ mCursor = mResolver.query(Uri.withAppendedPath(uri, Contacts.Data.CONTENT_DIRECTORY),
new String[] {Contacts.DISPLAY_NAME}, null, null, null);
mCursor.registerContentObserver(mObserver);
- long contactId = ContentUris.parseId(mUri);
+ long contactId = ContentUris.parseId(uri);
mHandler.startQueryEntities(TOKEN_QUERY, null,
RawContacts.CONTENT_URI, RawContacts.CONTACT_ID + "=" + contactId, null, null);
@@ -590,6 +628,10 @@
final boolean hasRawContact = (mRawContactIds.size() > 0);
menu.findItem(R.id.menu_edit).setEnabled(hasRawContact);
+ // Disable delete for readonly contact
+ if (mWritableSourcesCnt == 0) {
+ menu.findItem(R.id.menu_delete).setEnabled(false);
+ }
return true;
}
@@ -660,7 +702,13 @@
}
case R.id.menu_delete: {
// Get confirmation
- showDialog(DIALOG_CONFIRM_DELETE);
+ if (mReadOnlySourcesCnt > 0 & mWritableSourcesCnt > 0) {
+ showDialog(DIALOG_CONFIRM_READONLY_DELETE);
+ } else if (mWritableSourcesCnt > 1) {
+ showDialog(DIALOG_CONFIRM_MULTIPLE_DELETE);
+ } else {
+ showDialog(DIALOG_CONFIRM_DELETE);
+ }
return true;
}
case R.id.menu_join: {
@@ -725,54 +773,22 @@
}
/**
- * Shows a dialog that contains a list of all constituent contacts in this aggregate.
- * The user picks a contact to be split into its own aggregate or clicks Cancel.
- */
- private void showSplitAggregateDialog() {
- // Wrap this dialog in a specific theme so that list items have correct text color.
- final ContextThemeWrapper dialogContext =
- new ContextThemeWrapper(this, android.R.style.Theme_Light);
- AlertDialog.Builder builder =
- new AlertDialog.Builder(dialogContext);
- builder.setTitle(getString(R.string.splitAggregate_title));
-
- final SplitAggregateView view = new SplitAggregateView(dialogContext, mUri);
- builder.setView(view);
-
- builder.setInverseBackgroundForced(true);
- builder.setCancelable(true);
- builder.setNegativeButton(android.R.string.cancel,
- new OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- });
- final AlertDialog dialog = builder.create();
-
- view.setOnContactSelectedListener(new OnContactSelectedListener() {
- public void onContactSelected(long rawContactId) {
- dialog.dismiss();
- splitContact(rawContactId);
- }
- });
-
- dialog.show();
- }
-
- /**
* Shows a list of aggregates that can be joined into the currently viewed aggregate.
*/
public void showJoinAggregateActivity() {
- String displayName = null;
- if (mCursor.moveToFirst()) {
- displayName = mCursor.getString(0);
+ long freshId = getRefreshedContactId();
+ if (freshId > 0) {
+ String displayName = null;
+ if (mCursor.moveToFirst()) {
+ displayName = mCursor.getString(0);
+ }
+ Intent intent = new Intent(ContactsListActivity.JOIN_AGGREGATE);
+ intent.putExtra(ContactsListActivity.EXTRA_AGGREGATE_ID, freshId);
+ if (displayName != null) {
+ intent.putExtra(ContactsListActivity.EXTRA_AGGREGATE_NAME, displayName);
+ }
+ startActivityForResult(intent, REQUEST_JOIN_CONTACT);
}
- Intent intent = new Intent(ContactsListActivity.JOIN_AGGREGATE);
- intent.putExtra(ContactsListActivity.EXTRA_AGGREGATE_ID, ContentUris.parseId(mUri));
- if (displayName != null) {
- intent.putExtra(ContactsListActivity.EXTRA_AGGREGATE_NAME, displayName);
- }
- startActivityForResult(intent, REQUEST_JOIN_CONTACT);
}
@Override
@@ -831,7 +847,7 @@
private void showOptionsActivity() {
final Intent intent = new Intent(this, ContactOptionsActivity.class);
- intent.setData(mUri);
+ intent.setData(mLookupUri);
startActivity(intent);
}
@@ -870,14 +886,25 @@
}
} else if (mNumPhoneNumbers != 0) {
// There isn't anything selected, call the default number
- Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED, mUri);
- startActivity(intent);
+ long freshContactId = getRefreshedContactId();
+ if (freshContactId > 0) {
+ Uri hardContacUri = ContentUris.withAppendedId(
+ Contacts.CONTENT_URI, freshContactId);
+ Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED, hardContacUri);
+ startActivity(intent);
+ }
}
return true;
}
case KeyEvent.KEYCODE_DEL: {
- showDialog(DIALOG_CONFIRM_DELETE);
+ if (mReadOnlySourcesCnt > 0 & mWritableSourcesCnt > 0) {
+ showDialog(DIALOG_CONFIRM_READONLY_DELETE);
+ } else if (mWritableSourcesCnt > 1) {
+ showDialog(DIALOG_CONFIRM_MULTIPLE_DELETE);
+ } else {
+ showDialog(DIALOG_CONFIRM_DELETE);
+ }
return true;
}
}
@@ -935,11 +962,14 @@
}
mRawContactIds.clear();
+ mReadOnlySourcesCnt = 0;
+ mWritableSourcesCnt = 0;
+ mWritableRawContactIds.clear();
Sources sources = Sources.getInstance(this);
// Build up method entries
- if (mUri != null) {
+ if (mLookupUri != null) {
for (Entity entity: mEntities) {
final ContentValues entValues = entity.getEntityValues();
final String accountType = entValues.getAsString(RawContacts.ACCOUNT_TYPE);
@@ -956,6 +986,12 @@
final ContactsSource source = sources.getInflatedSource(accountType,
ContactsSource.LEVEL_SUMMARY);
+ if (source.readOnly) {
+ mReadOnlySourcesCnt += 1;
+ } else {
+ mWritableSourcesCnt += 1;
+ mWritableRawContactIds.add(rawContactId);
+ }
final String accountName = entValues.getAsString(RawContacts.ACCOUNT_NAME);
mAccountName.setText(getString(R.string.account_name_format,
source.getDisplayLabel(this), accountName));
diff --git a/src/com/android/contacts/model/EntitySet.java b/src/com/android/contacts/model/EntitySet.java
index adc87ee..be2f70f 100644
--- a/src/com/android/contacts/model/EntitySet.java
+++ b/src/com/android/contacts/model/EntitySet.java
@@ -43,6 +43,8 @@
* and applying another {@link EntitySet} over it.
*/
public class EntitySet extends ArrayList<EntityDelta> implements Parcelable {
+ private boolean mSplitRawContacts;
+
private EntitySet() {
}
@@ -128,15 +130,22 @@
}
final int assertMark = diff.size();
+ int backRefs[] = new int[size()];
+
+ int rawContactIndex = 0;
// Second pass builds actual operations
for (EntityDelta delta : this) {
final int firstBatch = diff.size();
+ backRefs[rawContactIndex++] = firstBatch;
delta.buildDiff(diff);
// Only create rules for inserts
if (!delta.isContactInsert()) continue;
+ // If we are going to split all contacts, there is no point in first combining them
+ if (mSplitRawContacts) continue;
+
if (rawContactId != -1) {
// Has existing contact, so bind to it strongly
final Builder builder = beginKeepTogether();
@@ -157,6 +166,10 @@
}
}
+ if (mSplitRawContacts) {
+ buildSplitContactDiff(diff, backRefs);
+ }
+
// No real changes if only left with asserts
if (diff.size() == assertMark) {
diff.clear();
@@ -177,6 +190,47 @@
}
/**
+ * Builds {@link AggregationExceptions} to split all constituent raw contacts into
+ * separate contacts.
+ */
+ private void buildSplitContactDiff(final ArrayList<ContentProviderOperation> diff,
+ int[] backRefs) {
+ int count = size();
+ for (int i = 0; i < count; i++) {
+ for (int j = 0; j < count; j++) {
+ if (i != j) {
+ buildSplitContactDiff(diff, i, j, backRefs);
+ }
+ }
+ }
+ }
+
+ /**
+ * Construct a {@link AggregationExceptions#TYPE_KEEP_SEPARATE}.
+ */
+ private void buildSplitContactDiff(ArrayList<ContentProviderOperation> diff, int index1,
+ int index2, int[] backRefs) {
+ Builder builder =
+ ContentProviderOperation.newUpdate(AggregationExceptions.CONTENT_URI);
+ builder.withValue(AggregationExceptions.TYPE, AggregationExceptions.TYPE_KEEP_SEPARATE);
+
+ Long rawContactId1 = get(index1).getValues().getAsLong(RawContacts._ID);
+ if (rawContactId1 != null && rawContactId1 >= 0) {
+ builder.withValue(AggregationExceptions.RAW_CONTACT_ID1, rawContactId1);
+ } else {
+ builder.withValueBackReference(AggregationExceptions.RAW_CONTACT_ID1, backRefs[index1]);
+ }
+
+ Long rawContactId2 = get(index2).getValues().getAsLong(RawContacts._ID);
+ if (rawContactId2 != null && rawContactId2 >= 0) {
+ builder.withValue(AggregationExceptions.RAW_CONTACT_ID2, rawContactId2);
+ } else {
+ builder.withValueBackReference(AggregationExceptions.RAW_CONTACT_ID2, backRefs[index2]);
+ }
+ diff.add(builder.build());
+ }
+
+ /**
* Search all contained {@link EntityDelta} for the first one with an
* existing {@link RawContacts#_ID} value. Usually used when creating
* {@link AggregationExceptions} during an update.
@@ -249,6 +303,10 @@
return randomEntry;
}
+ public void splitRawContacts() {
+ mSplitRawContacts = true;
+ }
+
/** {@inheritDoc} */
public int describeContents() {
// Nothing special about this parcel
diff --git a/src/com/android/contacts/model/FallbackSource.java b/src/com/android/contacts/model/FallbackSource.java
index fa545be..ebef42b 100644
--- a/src/com/android/contacts/model/FallbackSource.java
+++ b/src/com/android/contacts/model/FallbackSource.java
@@ -25,6 +25,7 @@
import android.database.Cursor;
import android.provider.ContactsContract.CommonDataKinds.BaseTypes;
import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Event;
import android.provider.ContactsContract.CommonDataKinds.Im;
import android.provider.ContactsContract.CommonDataKinds.Nickname;
import android.provider.ContactsContract.CommonDataKinds.Note;
@@ -74,6 +75,7 @@
inflatePhoto(inflateLevel);
inflateNote(inflateLevel);
inflateWebsite(inflateLevel);
+ inflateEvent(inflateLevel);
setInflatedLevel(inflateLevel);
@@ -376,6 +378,19 @@
return kind;
}
+ protected DataKind inflateEvent(int inflateLevel) {
+ DataKind kind = getKindForMimetype(Event.CONTENT_ITEM_TYPE);
+ if (kind == null) {
+ kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE,
+ R.string.eventLabelsGroup, -1, 150, false));
+ kind.secondary = true;
+ kind.actionHeader = new EventActionInflater();
+ kind.actionBody = new SimpleInflater(Event.START_DATE);
+ }
+
+ return kind;
+ }
+
/**
* Simple inflater that assumes a string resource has a "%s" that will be
* filled from the given column.
@@ -558,6 +573,13 @@
}
}
+ public static class EventActionInflater extends CommonInflater {
+ @Override
+ protected int getTypeLabelResource(Integer type) {
+ return Event.getTypeResource(type);
+ }
+ }
+
public static class PostalActionInflater extends CommonInflater {
@Override
protected int getTypeLabelResource(Integer type) {
diff --git a/src/com/android/contacts/model/GoogleSource.java b/src/com/android/contacts/model/GoogleSource.java
index 6706ec0..010982c 100644
--- a/src/com/android/contacts/model/GoogleSource.java
+++ b/src/com/android/contacts/model/GoogleSource.java
@@ -61,6 +61,7 @@
inflatePhoto(inflateLevel);
inflateNote(inflateLevel);
inflateWebsite(inflateLevel);
+ inflateEvent(inflateLevel);
// TODO: GOOGLE: GROUPMEMBERSHIP
diff --git a/src/com/android/contacts/ui/DisplayGroupsActivity.java b/src/com/android/contacts/ui/DisplayGroupsActivity.java
index 7bd7b9d..ce68dcb 100644
--- a/src/com/android/contacts/ui/DisplayGroupsActivity.java
+++ b/src/com/android/contacts/ui/DisplayGroupsActivity.java
@@ -299,7 +299,7 @@
} else if (isUpdate()) {
// When has changes and "before" exists, then "update"
final Builder builder = ContentProviderOperation
- .newUpdate(mUngrouped ? Settings.CONTENT_URI : Groups.CONTENT_URI);
+ .newUpdate(mUngrouped ? Settings.CONTENT_URI : addCallerIsSyncAdapterParameter(Groups.CONTENT_URI));
if (mUngrouped) {
builder.withSelection(Settings.ACCOUNT_NAME + "=? AND " + Settings.ACCOUNT_TYPE
+ "=?", new String[] {
@@ -323,6 +323,12 @@
}
}
+ private static Uri addCallerIsSyncAdapterParameter(Uri uri) {
+ return uri.buildUpon()
+ .appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true")
+ .build();
+ }
+
/**
* {@link Comparator} to sort by {@link Groups#_ID}.
*/
diff --git a/src/com/android/contacts/ui/EditContactActivity.java b/src/com/android/contacts/ui/EditContactActivity.java
index 9c0c69a..5e9959f 100644
--- a/src/com/android/contacts/ui/EditContactActivity.java
+++ b/src/com/android/contacts/ui/EditContactActivity.java
@@ -96,6 +96,9 @@
private static final String KEY_EDIT_STATE = "state";
private static final String KEY_SELECTED_RAW_CONTACT = "selected";
+ /** The result code when view activity should close after edit returns */
+ public static final int RESULT_CLOSE_VIEW_ACTIVITY = 777;
+
private String mQuerySelection;
private ScrollingTabWidget mTabWidget;
@@ -363,7 +366,7 @@
this.setSelectedRawContactId(selectedRawContactId);
} else {
// Nothing remains to edit, save and bail entirely
- this.doSaveAction();
+ this.doSaveAction(RESULT_OK);
}
// Show editor now that we've loaded state
@@ -461,7 +464,7 @@
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_done:
- doSaveAction();
+ doSaveAction(RESULT_OK);
break;
case R.id.btn_discard:
doRevertAction();
@@ -472,7 +475,7 @@
/** {@inheritDoc} */
@Override
public void onBackPressed() {
- doSaveAction();
+ doSaveAction(RESULT_OK);
}
/** {@inheritDoc} */
@@ -519,7 +522,7 @@
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_done:
- return doSaveAction();
+ return doSaveAction(RESULT_OK);
case R.id.menu_discard:
return doRevertAction();
case R.id.menu_add:
@@ -530,6 +533,10 @@
return doPickPhotoAction();
case R.id.menu_photo_remove:
return doRemovePhotoAction();
+ case R.id.menu_split:
+ return doSplitContactAction();
+ case R.id.menu_join:
+ return doJoinContactAction();
}
return false;
}
@@ -552,8 +559,11 @@
private WeakReference<ProgressDialog> progress;
- public PersistTask(EditContactActivity target) {
+ private final int mResultCode;
+
+ public PersistTask(EditContactActivity target, int resultCode) {
super(target);
+ mResultCode = resultCode;
}
/** {@inheritDoc} */
@@ -599,7 +609,7 @@
final Uri contactLookupUri = RawContacts.getContactLookupUri(resolver,
rawContactUri);
intent.setData(contactLookupUri);
- target.setResult(RESULT_OK, intent);
+ target.setResult(mResultCode, intent);
target.finish();
}
result = (diff.size() > 0) ? RESULT_SUCCESS : RESULT_UNCHANGED;
@@ -665,10 +675,10 @@
* Saves or creates the contact based on the mode, and if successful
* finishes the activity.
*/
- private boolean doSaveAction() {
+ private boolean doSaveAction(int resultCode) {
if (!hasValidState()) return false;
- final PersistTask task = new PersistTask(this);
+ final PersistTask task = new PersistTask(this, resultCode);
task.execute(mState);
return true;
@@ -751,6 +761,16 @@
}
}
+ private boolean doSplitContactAction() {
+ mState.splitRawContacts();
+ return doSaveAction(RESULT_CLOSE_VIEW_ACTIVITY);
+ }
+
+ private boolean doJoinContactAction() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
diff --git a/src/com/android/contacts/ui/FastTrackActivity.java b/src/com/android/contacts/ui/QuickContactActivity.java
similarity index 61%
rename from src/com/android/contacts/ui/FastTrackActivity.java
rename to src/com/android/contacts/ui/QuickContactActivity.java
index 6958298..5cd2d18 100644
--- a/src/com/android/contacts/ui/FastTrackActivity.java
+++ b/src/com/android/contacts/ui/QuickContactActivity.java
@@ -21,22 +21,23 @@
import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
-import android.provider.ContactsContract.FastTrack;
+import android.provider.ContactsContract.QuickContact;
/**
- * Stub translucent activity that just shows {@link FastTrackWindow} floating
+ * Stub translucent activity that just shows {@link QuickContactWindow} floating
* above the caller. This temporary hack should eventually be replaced with
* direct framework support.
*/
-public final class FastTrackActivity extends Activity implements FastTrackWindow.OnDismissListener {
- private FastTrackWindow mFastTrack;
+public final class QuickContactActivity extends Activity implements
+ QuickContactWindow.OnDismissListener {
+ private QuickContactWindow mQuickContact;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
- if (FastTrackWindow.TRACE_LAUNCH) {
- android.os.Debug.startMethodTracing(FastTrackWindow.TRACE_TAG);
+ if (QuickContactWindow.TRACE_LAUNCH) {
+ android.os.Debug.startMethodTracing(QuickContactWindow.TRACE_TAG);
}
// Use our local window token for now
@@ -45,22 +46,22 @@
final Bundle extras = intent.getExtras();
// Read requested parameters for displaying
- final Rect target = (Rect)extras.getParcelable(FastTrack.EXTRA_TARGET_RECT);
- final int mode = extras.getInt(FastTrack.EXTRA_MODE, FastTrack.MODE_MEDIUM);
- final String[] excludeMimes = extras.getStringArray(FastTrack.EXTRA_EXCLUDE_MIMES);
+ final Rect target = (Rect)extras.getParcelable(QuickContact.EXTRA_TARGET_RECT);
+ final int mode = extras.getInt(QuickContact.EXTRA_MODE, QuickContact.MODE_MEDIUM);
+ final String[] excludeMimes = extras.getStringArray(QuickContact.EXTRA_EXCLUDE_MIMES);
- mFastTrack = new FastTrackWindow(this, this);
- mFastTrack.show(lookupUri, target, mode, excludeMimes);
+ mQuickContact = new QuickContactWindow(this, this);
+ mQuickContact.show(lookupUri, target, mode, excludeMimes);
}
@Override
protected void onStop() {
super.onStop();
- mFastTrack.dismiss();
+ mQuickContact.dismiss();
}
/** {@inheritDoc} */
- public void onDismiss(FastTrackWindow dialog) {
+ public void onDismiss(QuickContactWindow dialog) {
// When dismissed, finish this activity
finish();
}
diff --git a/src/com/android/contacts/ui/FastTrackWindow.java b/src/com/android/contacts/ui/QuickContactWindow.java
similarity index 95%
rename from src/com/android/contacts/ui/FastTrackWindow.java
rename to src/com/android/contacts/ui/QuickContactWindow.java
index 25a0167..6059079 100644
--- a/src/com/android/contacts/ui/FastTrackWindow.java
+++ b/src/com/android/contacts/ui/QuickContactWindow.java
@@ -40,7 +40,7 @@
import android.net.Uri;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
-import android.provider.ContactsContract.FastTrack;
+import android.provider.ContactsContract.QuickContact;
import android.provider.ContactsContract.Presence;
import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.CommonDataKinds.Email;
@@ -86,17 +86,17 @@
* Window that shows fast-track contact details for a specific
* {@link Contacts#_ID}.
*/
-public class FastTrackWindow implements Window.Callback,
+public class QuickContactWindow implements Window.Callback,
NotifyingAsyncQueryHandler.AsyncQueryListener, View.OnClickListener,
AbsListView.OnItemClickListener, CompoundButton.OnCheckedChangeListener {
- private static final String TAG = "FastTrackWindow";
+ private static final String TAG = "QuickContactWindow";
/**
- * Interface used to allow the person showing a {@link FastTrackWindow} to
+ * Interface used to allow the person showing a {@link QuickContactWindow} to
* know when the window has been dismissed.
*/
public interface OnDismissListener {
- public void onDismiss(FastTrackWindow dialog);
+ public void onDismiss(QuickContactWindow dialog);
}
private final Context mContext;
@@ -164,13 +164,13 @@
private static final int TOKEN_DATA = 3;
static final boolean TRACE_LAUNCH = false;
- static final String TRACE_TAG = "fasttrack";
+ static final String TRACE_TAG = "quickcontact";
/**
* Prepare a fast-track window to show in the given {@link Context}.
*/
- public FastTrackWindow(Context context) {
- mContext = new ContextThemeWrapper(context, R.style.FastTrack);
+ public QuickContactWindow(Context context) {
+ mContext = new ContextThemeWrapper(context, R.style.QuickContact);
mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mWindowManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
@@ -178,7 +178,7 @@
mWindow.setCallback(this);
mWindow.setWindowManager(mWindowManager, null, null);
- mWindow.setContentView(R.layout.fasttrack);
+ mWindow.setContentView(R.layout.quickcontact);
mArrowUp = (ImageView)mWindow.findViewById(R.id.arrow_up);
mArrowDown = (ImageView)mWindow.findViewById(R.id.arrow_down);
@@ -186,9 +186,9 @@
mResolveCache = new ResolveCache(mContext);
final Resources res = mContext.getResources();
- mShadowHeight = res.getDimensionPixelSize(R.dimen.fasttrack_shadow);
+ mShadowHeight = res.getDimensionPixelSize(R.dimen.quickcontact_shadow);
- mTrack = (ViewGroup)mWindow.findViewById(R.id.fasttrack);
+ mTrack = (ViewGroup)mWindow.findViewById(R.id.quickcontact);
mTrackScroll = (HorizontalScrollView)mWindow.findViewById(R.id.scroll);
mFooter = mWindow.findViewById(R.id.footer);
@@ -199,7 +199,7 @@
mSetPrimaryCheckBox.setOnCheckedChangeListener(this);
// Prepare track entrance animation
- mTrackAnim = AnimationUtils.loadAnimation(mContext, R.anim.fasttrack);
+ mTrackAnim = AnimationUtils.loadAnimation(mContext, R.anim.quickcontact);
mTrackAnim.setInterpolator(new Interpolator() {
public float getInterpolation(float t) {
// Pushes past the target area, then snaps back into place.
@@ -215,7 +215,7 @@
* notify the given {@link OnDismissListener} each time this dialog is
* dismissed.
*/
- public FastTrackWindow(Context context, OnDismissListener dismissListener) {
+ public QuickContactWindow(Context context, OnDismissListener dismissListener) {
this(context);
mDismissListener = dismissListener;
}
@@ -223,13 +223,13 @@
private View getHeaderView(int mode) {
View header = null;
switch (mode) {
- case FastTrack.MODE_SMALL:
+ case QuickContact.MODE_SMALL:
header = mWindow.findViewById(R.id.header_small);
break;
- case FastTrack.MODE_MEDIUM:
+ case QuickContact.MODE_MEDIUM:
header = mWindow.findViewById(R.id.header_medium);
break;
- case FastTrack.MODE_LARGE:
+ case QuickContact.MODE_LARGE:
header = mWindow.findViewById(R.id.header_large);
break;
}
@@ -264,7 +264,7 @@
mHeader = getHeaderView(mode);
mExcludeMimes = excludeMimes;
- setHeaderText(R.id.name, R.string.fasttrack_missing_name);
+ setHeaderText(R.id.name, R.string.quickcontact_missing_name);
setHeaderText(R.id.status, null);
setHeaderImage(R.id.presence, null);
@@ -325,14 +325,14 @@
// edge with top of anchor area, and adjusting to inset arrow.
showArrow(R.id.arrow_down, mAnchor.centerX());
l.y = mAnchor.top - blockHeight + mShadowHeight;
- l.windowAnimations = R.style.FastTrackAboveAnimation;
+ l.windowAnimations = R.style.QuickContactAboveAnimation;
} else {
// Otherwise show upwards callout, aligning block top with bottom of
// anchor area, and adjusting to inset arrow.
showArrow(R.id.arrow_up, mAnchor.centerX());
l.y = mAnchor.bottom - mShadowHeight;
- l.windowAnimations = R.style.FastTrackBelowAnimation;
+ l.windowAnimations = R.style.QuickContactBelowAnimation;
}
@@ -418,10 +418,10 @@
*/
private synchronized void considerShowing() {
if (mHasSummary && mHasSocial && mHasActions && !mShowing) {
- if (mMode == FastTrack.MODE_MEDIUM && !mHasValidSocial) {
+ if (mMode == QuickContact.MODE_MEDIUM && !mHasValidSocial) {
// Missing valid social, swap medium for small header
mHeader.setVisibility(View.GONE);
- mHeader = getHeaderView(FastTrack.MODE_SMALL);
+ mHeader = getHeaderView(QuickContact.MODE_SMALL);
}
// All queries have returned, pull curtain
@@ -546,21 +546,21 @@
int resId = -1;
switch (status) {
case Presence.AVAILABLE:
- resId = R.drawable.fasttrack_slider_presence_active;
+ resId = R.drawable.quickcontact_slider_presence_active;
break;
case Presence.IDLE:
case Presence.AWAY:
- resId = R.drawable.fasttrack_slider_presence_away;
+ resId = R.drawable.quickcontact_slider_presence_away;
break;
case Presence.DO_NOT_DISTURB:
- resId = R.drawable.fasttrack_slider_presence_busy;
+ resId = R.drawable.quickcontact_slider_presence_busy;
break;
case Presence.INVISIBLE:
- resId = R.drawable.fasttrack_slider_presence_inactive;
+ resId = R.drawable.quickcontact_slider_presence_inactive;
break;
case Presence.OFFLINE:
default:
- resId = R.drawable.fasttrack_slider_presence_inactive;
+ resId = R.drawable.quickcontact_slider_presence_inactive;
}
return mContext.getResources().getDrawable(resId);
}
@@ -675,6 +675,7 @@
// Otherwise fall back to default VIEW action
mIntent = new Intent(Intent.ACTION_VIEW, mDataUri);
}
+ mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
/** {@inheritDoc} */
@@ -759,7 +760,9 @@
/** {@inheritDoc} */
public Intent getIntent() {
final Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, mId);
- return new Intent(Intent.ACTION_VIEW, contactUri);
+ final Intent intent = new Intent(Intent.ACTION_VIEW, contactUri);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ return intent;
}
/** {@inheritDoc} */
@@ -996,7 +999,8 @@
* the icon provided by the {@link DataKind}.
*/
private View inflateAction(String mimeType) {
- CheckableImageView view = (CheckableImageView)mInflater.inflate(R.layout.fasttrack_item, mTrack, false);
+ CheckableImageView view = (CheckableImageView)mInflater.inflate(
+ R.layout.quickcontact_item, mTrack, false);
boolean isActionSet = false;
// Add direct intent if single child, otherwise flag for multiple
@@ -1092,7 +1096,8 @@
}
} catch (ActivityNotFoundException e) {
- Toast.makeText(mContext, R.string.fasttrack_missing_app, Toast.LENGTH_SHORT).show();
+ Toast.makeText(mContext, R.string.quickcontact_missing_app, Toast.LENGTH_SHORT)
+ .show();
}
} else if (tag instanceof ActionList) {
// Incoming tag is a MIME-type, so show resolution list
@@ -1117,7 +1122,8 @@
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
- convertView = mInflater.inflate(R.layout.fasttrack_resolve_item, parent, false);
+ convertView = mInflater.inflate(
+ R.layout.quickcontact_resolve_item, parent, false);
}
// Set action title based on summary value
diff --git a/src/com/android/contacts/ui/widget/CheckableImageView.java b/src/com/android/contacts/ui/widget/CheckableImageView.java
index ceddf57..ff5abc0 100644
--- a/src/com/android/contacts/ui/widget/CheckableImageView.java
+++ b/src/com/android/contacts/ui/widget/CheckableImageView.java
@@ -23,7 +23,7 @@
/**
* A special variation of ImageView that can be used as a checkable object.
- * This is used as the background view of fasttrack chiclet, which is in checked state
+ * This is used as the background view of quickcontact chiclet, which is in checked state
* when disambig list is shown. Otherwise, it works identically to a ImageView.
*/
public class CheckableImageView extends ImageView implements Checkable {
diff --git a/src/com/android/contacts/ui/widget/ContactEditorView.java b/src/com/android/contacts/ui/widget/ContactEditorView.java
index 245986b..c723f6f 100644
--- a/src/com/android/contacts/ui/widget/ContactEditorView.java
+++ b/src/com/android/contacts/ui/widget/ContactEditorView.java
@@ -35,7 +35,6 @@
import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.CommonDataKinds.Photo;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
-import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
@@ -205,6 +204,9 @@
parent.addView(section);
}
}
+ final int secondaryVisibility = mSecondary.getChildCount() > 0 ? View.VISIBLE : View.GONE;
+ mSecondary.setVisibility(secondaryVisibility);
+ mSecondaryHeader.setVisibility(secondaryVisibility);
}
/**