Merge "Defer phone search fragment" into ics-mr1
diff --git a/res/drawable/group_source_button_background.xml b/res/drawable/gray_action_bar_background.xml
similarity index 100%
rename from res/drawable/group_source_button_background.xml
rename to res/drawable/gray_action_bar_background.xml
diff --git a/res/layout-sw580dp/contact_picker.xml b/res/layout-sw580dp/contact_picker.xml
index d4ee224..c6582e0 100644
--- a/res/layout-sw580dp/contact_picker.xml
+++ b/res/layout-sw580dp/contact_picker.xml
@@ -14,19 +14,20 @@
      limitations under the License.
 -->
 
-<view
+<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    class="com.android.contacts.widget.FullHeightLinearLayout"
     style="@style/ContactPickerLayout"
     android:orientation="vertical"
     android:layout_height="match_parent">
+    <!-- Right bound should be aligned to ListView's right edge. -->
     <view
         class="android.widget.SearchView"
         android:id="@+id/search_view"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginLeft="0dip"
-        android:layout_marginRight="32dip"
+        android:layout_marginRight="@dimen/list_visible_scrollbar_padding"
+        android:paddingRight="0dip"
         android:iconifiedByDefault="false" />
     <!-- will contain an appropriate contacts list -->
     <FrameLayout
@@ -35,18 +36,26 @@
         android:layout_height="0dip"
         android:layout_weight="1" />
 
+    <!-- This should look like a menu on the split action bar. -->
     <LinearLayout
-        style="?android:attr/buttonBarStyle"
+        android:id="@+id/new_contact"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:minHeight="48dip"
+        android:background="@drawable/gray_action_bar_background"
         android:paddingLeft="16dip"
         android:paddingRight="16dip">
-        <Button
-            android:id="@+id/new_contact"
-            style="?android:attr/buttonBarButtonStyle"
-            android:layout_width="match_parent"
+        <TextView
+            android:id="@android:id/title"
+            android:layout_width="0dip"
             android:layout_height="wrap_content"
-            android:textAllCaps="true"
-            android:text="@string/pickerNewContactText" />
+            android:layout_weight="1"
+            android:layout_gravity="center"
+            android:gravity="center"
+            android:duplicateParentState="true"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textColor="@color/action_bar_button_text_color"
+            style="@android:style/Widget.Holo.ActionBar.TabText"
+            android:text="@string/pickerNewContactText"/>
     </LinearLayout>
-</view>
+</LinearLayout>
diff --git a/res/layout/group_source_button.xml b/res/layout/group_source_button.xml
index 8d09033..71348f6 100644
--- a/res/layout/group_source_button.xml
+++ b/res/layout/group_source_button.xml
@@ -25,7 +25,7 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="48dip"
-    android:background="@drawable/group_source_button_background"
+    android:background="@drawable/gray_action_bar_background"
     android:paddingLeft="16dip"
     android:paddingRight="16dip" >
 
diff --git a/res/layout/join_contact_picker_list_content.xml b/res/layout/join_contact_picker_list_content.xml
index 40137e2..8f9955f 100644
--- a/res/layout/join_contact_picker_list_content.xml
+++ b/res/layout/join_contact_picker_list_content.xml
@@ -19,15 +19,16 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:paddingTop="16dip"
     android:orientation="vertical">
 
     <TextView
         android:id="@+id/join_contact_blurb"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginLeft="@dimen/contact_browser_list_header_left_margin"
-        android:layout_marginRight="@dimen/contact_browser_list_header_right_margin"
+        android:layout_marginLeft="@dimen/join_header_left_margin"
+        android:layout_marginTop="@dimen/join_header_top_margin"
+        android:layout_marginRight="@dimen/join_header_right_margin"
+        android:layout_marginBottom="@dimen/join_header_bottom_margin"
         android:paddingLeft="?attr/list_item_header_text_indent"
         android:maxLines="2"
         android:textAppearance="?android:attr/textAppearanceSmall" />
diff --git a/res/layout/join_contact_picker_section_header.xml b/res/layout/join_contact_picker_section_header.xml
index 50dac70..2404558 100644
--- a/res/layout/join_contact_picker_section_header.xml
+++ b/res/layout/join_contact_picker_section_header.xml
@@ -20,19 +20,9 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical">
-
     <TextView
         android:id="@+id/text"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:minHeight="32dip"
-        android:paddingLeft="?attr/list_item_header_text_indent"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:textAllCaps="true"
-        android:textStyle="bold"
-        android:singleLine="true"
-        android:ellipsize="end"
-        android:gravity="center_vertical" />
-
-    <View style="@style/SectionDivider" />
+        style="@style/ContactListSeparatorTextViewStyle"
+        android:paddingLeft="8dip"
+        android:paddingRight="8dip" />
 </LinearLayout>
diff --git a/res/values-sw580dp/dimens.xml b/res/values-sw580dp/dimens.xml
index cb2d173..3d3cb17 100644
--- a/res/values-sw580dp/dimens.xml
+++ b/res/values-sw580dp/dimens.xml
@@ -40,6 +40,13 @@
     <dimen name="list_visible_scrollbar_padding">48dip</dimen>
     <dimen name="account_filter_header_top_padding">@dimen/contact_browser_list_top_margin</dimen>
 
+    <!-- Because the "join" screen has the vertical scroll bar on right,
+      we cannot use @dimen/contact_browser_list_header_left_margin as is. -->
+    <dimen name="join_header_left_margin">24dip</dimen>
+    <dimen name="join_header_right_margin">@dimen/list_visible_scrollbar_padding</dimen>
+    <dimen name="join_header_top_margin">16dip</dimen>
+    <dimen name="join_header_bottom_margin">16dip</dimen>
+
     <!-- Margins and padding for text in widget -->
     <dimen name="widget_snippet_top_margin">5dip</dimen>
     <dimen name="widget_snippet_bottom_margin">6dip</dimen>
diff --git a/res/values-sw580dp/styles.xml b/res/values-sw580dp/styles.xml
index 3cf50e2..bf5b137 100644
--- a/res/values-sw580dp/styles.xml
+++ b/res/values-sw580dp/styles.xml
@@ -57,6 +57,7 @@
     </style>
 
     <style name="ContactPickerTheme" parent="@android:Theme.Holo.Light.Dialog">
+        <item name="android:windowSoftInputMode">adjustResize</item>
         <item name="android:listViewStyle">@style/ListViewStyle</item>
         <item name="list_item_height">?android:attr/listPreferredItemHeight</item>
         <item name="section_header_background">@drawable/list_title_holo</item>
@@ -82,17 +83,18 @@
         <item name="list_item_label_width_weight">3</item>
         <item name="list_item_contacts_count_text_color">@color/contact_count_text_color</item>
         <item name="list_item_contacts_count_text_size">12sp</item>
-        <item name="contact_browser_list_padding_left">16dip</item>
+        <item name="contact_browser_list_padding_left">24dip</item>
         <item name="contact_browser_list_padding_right">0dip</item>
         <item name="contact_browser_background">@android:color/transparent</item>
+        <item name="list_item_text_indent">@dimen/contact_browser_list_item_text_indent</item>
     </style>
     <style name="ContactPickerLayout" parent="ContactPickerTheme">
         <item name="android:layout_width">match_parent</item>
-        <item name="android:layout_height">480dip</item>
+        <item name="android:layout_height">match_parent</item>
     </style>
     <style name="JoinContactActivityTheme" parent="ContactPickerTheme" >
         <item name="android:layout_width">match_parent</item>
-        <item name="android:layout_height">480dip</item>
+        <item name="android:layout_height">match_parent</item>
     </style>
 
     <style name="ContactListFilterTheme" parent="@android:Theme.Holo.Light.Dialog">
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index fa66877..89122ca 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -166,6 +166,11 @@
     <dimen name="contact_browser_list_item_photo_size">64dip</dimen>
     <dimen name="contact_browser_list_item_text_indent">8dip</dimen>
     <dimen name="contact_browser_list_top_margin">8dip</dimen>
+    <!-- For join screen. Mainly for tablet. -->
+    <dimen name="join_header_left_margin">@dimen/contact_browser_list_header_left_margin</dimen>
+    <dimen name="join_header_right_margin">@dimen/contact_browser_list_header_right_margin</dimen>
+    <dimen name="join_header_top_margin">16dip</dimen>
+    <dimen name="join_header_bottom_margin">0dip</dimen>
 
     <dimen name="account_filter_header_top_padding">0dip</dimen>
 
diff --git a/res/values/donottranslate_config.xml b/res/values/donottranslate_config.xml
index 79a2b29..b36dbe1 100644
--- a/res/values/donottranslate_config.xml
+++ b/res/values/donottranslate_config.xml
@@ -124,4 +124,10 @@
     <!-- Regular expression for prohibiting certain phone numbers in dialpad.
          Ignored if empty. -->
     <string name="config_prohibited_phone_number_regexp"></string>
+
+    <!-- If true, enable the "import contacts from SIM" feature if the device
+         has an appropriate SIM or ICC card.
+         Setting this flag to false in a resource overlay allows you to
+         entirely disable SIM import on a per-product basis. -->
+    <bool name="config_allow_sim_import">true</bool>
 </resources>
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index e68c7bc..3098864 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -86,7 +86,7 @@
     /**
      * Can be null. If null, the "Create New Contact" button should be on the menu.
      */
-    private Button mCreateNewContactButton;
+    private View mCreateNewContactButton;
 
     public ContactSelectionActivity() {
         mIntentResolver = new ContactsIntentResolver(this);
@@ -135,7 +135,7 @@
 
         prepareSearchViewAndActionBar();
 
-        mCreateNewContactButton = (Button) findViewById(R.id.new_contact);
+        mCreateNewContactButton = findViewById(R.id.new_contact);
         if (mCreateNewContactButton != null) {
             if (shouldShowCreateNewContactButton()) {
                 mCreateNewContactButton.setVisibility(View.VISIBLE);
diff --git a/src/com/android/contacts/activities/DialtactsActivity.java b/src/com/android/contacts/activities/DialtactsActivity.java
index 88bdcbf..1de7b76 100644
--- a/src/com/android/contacts/activities/DialtactsActivity.java
+++ b/src/com/android/contacts/activities/DialtactsActivity.java
@@ -400,8 +400,6 @@
         mViewPager.setAdapter(new ViewPagerAdapter(getFragmentManager()));
         mViewPager.setOnPageChangeListener(mPageChangeListener);
 
-        prepareSearchView();
-
         // Setup the ActionBar tabs (the order matches the tab-index contants TAB_INDEX_*)
         setupDialer();
         setupCallLog();
@@ -815,6 +813,10 @@
      * Hides every tab and shows search UI for phone lookup.
      */
     private void enterSearchUi() {
+        if (mSearchView == null) {
+            prepareSearchView();
+        }
+
         final ActionBar actionBar = getActionBar();
 
         final Tab tab = actionBar.getSelectedTab();
diff --git a/src/com/android/contacts/interactions/ImportExportDialogFragment.java b/src/com/android/contacts/interactions/ImportExportDialogFragment.java
index 2eedfb3..7fdc47e 100644
--- a/src/com/android/contacts/interactions/ImportExportDialogFragment.java
+++ b/src/com/android/contacts/interactions/ImportExportDialogFragment.java
@@ -87,7 +87,8 @@
             }
         };
 
-        if (TelephonyManager.getDefault().hasIccCard()) {
+        if (TelephonyManager.getDefault().hasIccCard()
+                && res.getBoolean(R.bool.config_allow_sim_import)) {
             adapter.add(R.string.import_from_sim);
         }
         if (res.getBoolean(R.bool.config_allow_import_from_sdcard)) {