Centers the QuickContact card in portrait on large tablets

bug: 16679207
Change-Id: I72f527296d219fcd168f790b82e4517625d9c0ca
diff --git a/res/layout-land/quickcontact_activity.xml b/res/layout-land/quickcontact_activity.xml
index b22b5ef..af622dc 100644
--- a/res/layout-land/quickcontact_activity.xml
+++ b/res/layout-land/quickcontact_activity.xml
@@ -13,50 +13,6 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.contacts.widget.MultiShrinkScroller
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:id="@+id/multiscroller"
-    android:focusable="true"
-    android:focusableInTouchMode="true"
-    android:descendantFocusability="afterDescendants" >
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-
-        <View
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/quickcontact_starting_empty_height"
-            android:contentDescription="@string/quickcontact_transparent_view_description"
-            android:id="@+id/transparent_view" />
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:orientation="horizontal">
-
-            <!-- Needs a non null background for elevation to work on this View. This will
-                 *not* cause an additional draw since the background is transparent. -->
-            <FrameLayout
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:background="#00000000"
-                android:id="@+id/toolbar_parent">
-
-                <include layout="@layout/quickcontact_header" />
-
-                <include layout="@layout/quickcontact_title" />
-
-            </FrameLayout>
-
-            <include layout="@layout/quickcontact_content" />
-
-        </LinearLayout>
-
-    </LinearLayout>
-
-</com.android.contacts.widget.MultiShrinkScroller>
\ No newline at end of file
+<merge>
+    <include layout="@layout/quickcontact_activity_landscape" />
+</merge>
\ No newline at end of file
diff --git a/res/layout-sw720dp-land/quickcontact_activity.xml b/res/layout-sw720dp-land/quickcontact_activity.xml
new file mode 100644
index 0000000..af622dc
--- /dev/null
+++ b/res/layout-sw720dp-land/quickcontact_activity.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<merge>
+    <include layout="@layout/quickcontact_activity_landscape" />
+</merge>
\ No newline at end of file
diff --git a/res/layout-sw720dp/quickcontact_activity.xml b/res/layout-sw720dp/quickcontact_activity.xml
new file mode 100644
index 0000000..e8fcf54
--- /dev/null
+++ b/res/layout-sw720dp/quickcontact_activity.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<com.android.contacts.widget.MultiShrinkScroller
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:id="@+id/multiscroller"
+    android:focusable="true"
+    android:focusableInTouchMode="true"
+    android:descendantFocusability="afterDescendants" >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="horizontal">
+
+        <View
+            android:id="@+id/empty_start_column"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="@integer/contact_list_space_layout_weight"/>
+
+        <LinearLayout
+            android:layout_width="0dp"
+            android:layout_weight="@integer/contact_list_card_layout_weight"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/quickcontact_starting_empty_height"
+                android:contentDescription="@string/quickcontact_transparent_view_description"
+                android:id="@+id/transparent_view" />
+
+            <FrameLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:id="@+id/toolbar_parent">
+                <include layout="@layout/quickcontact_header" />
+            </FrameLayout>
+
+            <include layout="@layout/quickcontact_content" />
+
+        </LinearLayout>
+
+        <View
+            android:id="@+id/empty_end_column"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="@integer/contact_list_space_layout_weight"/>
+
+    </LinearLayout>
+
+    <!-- This title's maximum height must be less than the minimum size of its
+     parent ViewGroup because of an oddity in the way View#setScaleY() works. As a result,
+     this title can not be inside @style/quickcontact_header. -->
+    <include layout="@layout/quickcontact_title" />
+</com.android.contacts.widget.MultiShrinkScroller>
\ No newline at end of file
diff --git a/res/layout/quickcontact_activity_landscape.xml b/res/layout/quickcontact_activity_landscape.xml
new file mode 100644
index 0000000..1130ff8
--- /dev/null
+++ b/res/layout/quickcontact_activity_landscape.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<!-- This file is in the base layout/ directory so that it can be referenced from multiple config
+     folder without duplicating this file. -->
+<com.android.contacts.widget.MultiShrinkScroller
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:id="@+id/multiscroller"
+    android:focusable="true"
+    android:focusableInTouchMode="true"
+    android:descendantFocusability="afterDescendants" >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical">
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/quickcontact_starting_empty_height"
+            android:contentDescription="@string/quickcontact_transparent_view_description"
+            android:id="@+id/transparent_view" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="horizontal">
+
+            <!-- Needs a non null background for elevation to work on this View. This will
+                 *not* cause an additional draw since the background is transparent. -->
+            <FrameLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="#00000000"
+                android:id="@+id/toolbar_parent">
+
+                <include layout="@layout/quickcontact_header" />
+
+                <include layout="@layout/quickcontact_title" />
+
+            </FrameLayout>
+
+            <include layout="@layout/quickcontact_content" />
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+</com.android.contacts.widget.MultiShrinkScroller>
\ No newline at end of file
diff --git a/res/values-sw720dp/integers.xml b/res/values-sw720dp/integers.xml
index de13e46..ff73c62 100644
--- a/res/values-sw720dp/integers.xml
+++ b/res/values-sw720dp/integers.xml
@@ -19,10 +19,10 @@
 
     <integer name="contact_tile_column_count">2</integer>
 
-    <!-- Layout weight of space elements in PeopleActivity for favorites list and all
-      contacts list-->
+    <!-- Layout weight of column space elements for favorites list, all contacts list and
+         QuickContact-->
     <integer name="contact_list_space_layout_weight">11</integer>
-    <!-- Layout weight of ListViews in PeopleActivityfor tile favorites list and all
-         contacts list in PeopleActivity -->
+    <!-- Layout weight of the content column for tile favorites list, all contacts list, and
+         QuickContact -->
     <integer name="contact_list_card_layout_weight">81</integer>
 </resources>
diff --git a/src/com/android/contacts/widget/MultiShrinkScroller.java b/src/com/android/contacts/widget/MultiShrinkScroller.java
index a46749f..c631dd5 100644
--- a/src/com/android/contacts/widget/MultiShrinkScroller.java
+++ b/src/com/android/contacts/widget/MultiShrinkScroller.java
@@ -102,6 +102,7 @@
     private TextView mInvisiblePlaceholderTextView;
     private View mTitleGradientView;
     private View mActionBarGradientView;
+    private View mStartColumn;
     private int mHeaderTintColor;
     private int mMaximumHeaderHeight;
     private int mMinimumHeaderHeight;
@@ -267,6 +268,22 @@
         mTransparentView = findViewById(R.id.transparent_view);
         mLargeTextView = (TextView) findViewById(R.id.large_title);
         mInvisiblePlaceholderTextView = (TextView) findViewById(R.id.placeholder_textview);
+        mStartColumn = findViewById(R.id.empty_start_column);
+        // Touching the empty space should close the card
+        if (mStartColumn != null) {
+            mStartColumn.setOnClickListener(new OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    scrollOffBottom();
+                }
+            });
+            findViewById(R.id.empty_end_column).setOnClickListener(new OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    scrollOffBottom();
+                }
+            });
+        }
         mListener = listener;
         mIsOpenContactSquare = isOpenContactSquare;
 
@@ -989,8 +1006,12 @@
                 = (FrameLayout.LayoutParams) mLargeTextView.getLayoutParams();
         final LinearLayout.LayoutParams toolbarLayoutParams
                 = (LinearLayout.LayoutParams) mToolbar.getLayoutParams();
+
+        // Need to add more to margin start if there is a start column
+        int startColumnWidth = mStartColumn == null ? 0 : mStartColumn.getWidth();
+
         titleLayoutParams.setMarginStart((int) (mCollapsedTitleStartMargin * (1 - x)
-                + mMaximumTitleMargin * x));
+                + mMaximumTitleMargin * x) + startColumnWidth);
         // How offset the title should be from the bottom of the toolbar
         final int pretendBottomMargin =  (int) (mCollapsedTitleBottomMargin * (1 - x)
                 + mMaximumTitleMargin * x) ;