Move secondary call information to the bottom, clear call context.

The secondary call information was obscuring the call context info
because it was incorrectly being placed right under the primary call
info. This is a bug because it should placed under the FAB at the bottom
of the screen.
Also hide the call context info when a new call comes in that does not
have caller contex.

Bug: 25222360
Change-Id: I7601ce7e7e2609ac046ea104651ac50d863a86bc
diff --git a/InCallUI/res/layout/call_card_fragment.xml b/InCallUI/res/layout/call_card_fragment.xml
index 8f8ed93..2b8e811 100644
--- a/InCallUI/res/layout/call_card_fragment.xml
+++ b/InCallUI/res/layout/call_card_fragment.xml
@@ -16,147 +16,151 @@
   ~ limitations under the License
   -->
 
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <!-- Primary "call card" block, for the foreground call. -->
+    android:layout_height="match_parent">
     <LinearLayout
-        android:id="@+id/primary_call_info_container"
         android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        android:orientation="vertical"
-        android:elevation="@dimen/primary_call_elevation"
-        android:background="@color/incall_call_banner_background_color"
-        android:paddingTop="@dimen/call_banner_primary_call_container_top_padding"
-        android:clipChildren="false"
-        android:clipToPadding="false"
-        android:gravity="bottom">
+        android:layout_height="match_parent"
+        android:orientation="vertical">
 
-        <include layout="@layout/primary_call_info"
-            android:layout_centerHorizontal="true" />
-
-        <fragment android:name="com.android.incallui.CallButtonFragment"
-            android:id="@+id/callButtonFragment"
+        <!-- Primary "call card" block, for the foreground call. -->
+        <LinearLayout
+            android:id="@+id/primary_call_info_container"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
+            android:layout_height="0dp"
+            android:layout_weight="1"
+            android:orientation="vertical"
+            android:elevation="@dimen/primary_call_elevation"
+            android:background="@color/incall_call_banner_background_color"
+            android:paddingTop="@dimen/call_banner_primary_call_container_top_padding"
+            android:clipChildren="false"
+            android:clipToPadding="false"
+            android:gravity="bottom">
 
-        <TextView android:id="@+id/connectionServiceMessage"
+            <include layout="@layout/primary_call_info"
+                android:layout_centerHorizontal="true" />
+
+            <fragment android:name="com.android.incallui.CallButtonFragment"
+                android:id="@+id/callButtonFragment"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+
+            <TextView android:id="@+id/connectionServiceMessage"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:visibility="gone"
+                android:padding="@dimen/call_banner_side_padding"
+                android:background="@android:color/white" />
+
+        </LinearLayout>
+
+        <FrameLayout
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:visibility="gone"
-            android:padding="@dimen/call_banner_side_padding"
-            android:background="@android:color/white" />
+            android:layout_height="0dp"
+            android:layout_weight="2">
+
+            <FrameLayout
+                android:layout_height="match_parent"
+                android:layout_width="match_parent"
+                android:id="@+id/call_card_content">
+
+                <!-- Contact photo for primary call info -->
+                <ImageView android:id="@+id/photoLarge"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:scaleType="centerCrop"
+                    android:importantForAccessibility="no"
+                    android:background="@color/incall_photo_background_color"
+                    android:src="@drawable/img_no_image_automirrored" />
+
+                <!-- Call context -->
+                <LinearLayout
+                    android:id="@+id/contact_context"
+                    android:layout_height="match_parent"
+                    android:layout_width="match_parent"
+                    android:orientation="vertical"
+                    android:background="@color/incall_background_color"
+                    android:visibility="gone">
+                    <TextView android:id="@+id/contactContextTitle"
+                        android:textSize="@dimen/contact_context_title_text_size"
+                        android:textColor="@color/contact_context_title_text_color"
+                        android:fontFamily="sans-serif-medium"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center_horizontal"
+                        android:layout_marginBottom="@dimen/contact_context_title_margin_bottom"/>
+                    <ListView android:id="@+id/contactContextInfo"
+                         android:layout_width="match_parent"
+                         android:layout_height="match_parent"
+                         android:divider="@null"
+                         android:dividerHeight="@dimen/contact_context_list_item_padding"/>
+                </LinearLayout>
+            </FrameLayout>
+
+            <fragment android:name="com.android.incallui.VideoCallFragment"
+                android:id="@+id/videoCallFragment"
+                android:layout_alignParentTop="true"
+                android:layout_gravity="top|center_horizontal"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+
+            <!-- Progress spinner, useful for indicating pending operations such as upgrade to video. -->
+            <FrameLayout
+                android:id="@+id/progressSpinner"
+                android:background="#63000000"
+                android:layout_width="fill_parent"
+                android:layout_height="fill_parent"
+                android:layout_centerHorizontal="true"
+                android:layout_centerVertical="true"
+                android:visibility="gone">
+
+                <ProgressBar
+                    android:id="@+id/progress_bar"
+                    style="@android:style/Widget.Material.ProgressBar"
+                    android:layout_gravity="center"
+                    android:layout_width="48dp"
+                    android:layout_height="48dp"
+                    android:indeterminate="true" />
+
+            </FrameLayout>
+
+
+            <include layout="@layout/manage_conference_call_button"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+
+            <!-- Placeholder for various fragments that are added dynamically underneath the caller info. -->
+            <FrameLayout
+                android:id="@+id/answer_and_dialpad_container"
+                android:layout_gravity="bottom|center_horizontal"
+                android:layout_alignParentBottom="true"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:elevation="@dimen/dialpad_elevation" />
+
+            <FrameLayout
+                android:id="@+id/floating_end_call_action_button_container"
+                android:layout_width="@dimen/end_call_floating_action_button_diameter"
+                android:layout_height="@dimen/end_call_floating_action_button_diameter"
+                android:background="@drawable/fab_red"
+                android:layout_gravity="bottom|center_horizontal"
+                android:layout_marginBottom="@dimen/end_call_button_margin_bottom">
+
+                <ImageButton android:id="@+id/floating_end_call_action_button"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:background="@drawable/end_call_background"
+                    android:src="@drawable/fab_ic_end_call"
+                    android:scaleType="center"
+                    android:contentDescription="@string/onscreenEndCallText" />
+
+            </FrameLayout>
+
+        </FrameLayout>
 
     </LinearLayout>
-
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="2">
-
-        <FrameLayout
-            android:layout_height="match_parent"
-            android:layout_width="match_parent"
-            android:id="@+id/call_card_content">
-
-            <!-- Contact photo for primary call info -->
-            <ImageView android:id="@+id/photoLarge"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:scaleType="centerCrop"
-                android:importantForAccessibility="no"
-                android:background="@color/incall_photo_background_color"
-                android:src="@drawable/img_no_image_automirrored" />
-
-            <!-- Call context -->
-            <LinearLayout
-                android:id="@+id/contact_context"
-                android:layout_height="match_parent"
-                android:layout_width="match_parent"
-                android:orientation="vertical"
-                android:background="@color/incall_background_color"
-                android:visibility="gone">
-                <TextView android:id="@+id/contactContextTitle"
-                    android:textSize="@dimen/contact_context_title_text_size"
-                    android:textColor="@color/contact_context_title_text_color"
-                    android:fontFamily="sans-serif-medium"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center_horizontal"
-                    android:layout_marginBottom="@dimen/contact_context_title_margin_bottom"/>
-                <ListView android:id="@+id/contactContextInfo"
-                     android:layout_width="match_parent"
-                     android:layout_height="match_parent"
-                     android:divider="@null"
-                     android:dividerHeight="@dimen/contact_context_list_item_padding"/>
-            </LinearLayout>
-        </FrameLayout>
-
-        <fragment android:name="com.android.incallui.VideoCallFragment"
-            android:id="@+id/videoCallFragment"
-            android:layout_alignParentTop="true"
-            android:layout_gravity="top|center_horizontal"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent" />
-
-        <!-- Progress spinner, useful for indicating pending operations such as upgrade to video. -->
-        <FrameLayout
-            android:id="@+id/progressSpinner"
-            android:background="#63000000"
-            android:layout_width="fill_parent"
-            android:layout_height="fill_parent"
-            android:layout_centerHorizontal="true"
-            android:layout_centerVertical="true"
-            android:visibility="gone">
-
-            <ProgressBar
-                android:id="@+id/progress_bar"
-                style="@android:style/Widget.Material.ProgressBar"
-                android:layout_gravity="center"
-                android:layout_width="48dp"
-                android:layout_height="48dp"
-                android:indeterminate="true" />
-
-        </FrameLayout>
-
-        <!-- Secondary "Call info" block, for the background ("on hold") call. -->
-        <include layout="@layout/secondary_call_info" />
-
-        <include layout="@layout/manage_conference_call_button"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
-
-        <!-- Placeholder for various fragments that are added dynamically underneath the caller info. -->
-        <FrameLayout
-            android:id="@+id/answer_and_dialpad_container"
-            android:layout_gravity="bottom|center_horizontal"
-            android:layout_alignParentBottom="true"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:elevation="@dimen/dialpad_elevation" />
-
-        <FrameLayout
-            android:id="@+id/floating_end_call_action_button_container"
-            android:layout_width="@dimen/end_call_floating_action_button_diameter"
-            android:layout_height="@dimen/end_call_floating_action_button_diameter"
-            android:background="@drawable/fab_red"
-            android:layout_gravity="bottom|center_horizontal"
-            android:layout_marginBottom="@dimen/end_call_button_margin_bottom">
-
-            <ImageButton android:id="@+id/floating_end_call_action_button"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:background="@drawable/end_call_background"
-                android:src="@drawable/fab_ic_end_call"
-                android:scaleType="center"
-                android:contentDescription="@string/onscreenEndCallText" />
-
-        </FrameLayout>
-
-    </FrameLayout>
-
-</LinearLayout>
+    <!-- Secondary "Call info" block, for the background ("on hold") call. -->
+    <include layout="@layout/secondary_call_info" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java
index 0d63554..75d1353 100644
--- a/InCallUI/src/com/android/incallui/CallCardFragment.java
+++ b/InCallUI/src/com/android/incallui/CallCardFragment.java
@@ -184,8 +184,6 @@
     private boolean mCallStateLabelResetPending = false;
     private Handler mHandler;
 
-    private InCallContactInteractions mInCallContactInteractions;
-
     @Override
     public CallCardPresenter.CallCardUi getUi() {
         return this;
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index 28311c9..bccde6e 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -608,6 +608,8 @@
                     mPrimaryContactInfo.openingHours);
             getUi().setContactContextContent(mInCallContactInteractions.getListAdapter());
             getUi().showContactContext(mPrimary.getState() != State.INCOMING);
+        } else {
+            getUi().showContactContext(false);
         }
     }