Show message if contact has no data to show.

Fixes bc_triaged bug http://b/issue?id=2170901

Dr.NO approval from Tim Sullivan

Change-Id: I362ca992c3a97792fbc2d76fc3bcf4178bfefcd5
diff --git a/res/layout-finger/contact_card_layout.xml b/res/layout-finger/contact_card_layout.xml
index 19ef744..6e70561 100644
--- a/res/layout-finger/contact_card_layout.xml
+++ b/res/layout-finger/contact_card_layout.xml
@@ -25,17 +25,29 @@
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"/>
         
-    <FrameLayout android:id="@android:id/tabcontent"
+    <ListView android:id="@+id/contact_data"
         android:layout_width="fill_parent"
-        android:layout_height="0dip"
-        android:layout_weight="1">
-        
-        <View
+        android:layout_height="fill_parent"
+        android:background="@drawable/title_bar_shadow"
+    />
+    
+    <ScrollView android:id="@android:id/empty"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+        android:fillViewport="true"
+    >
+        <TextView android:id="@+id/emptyText"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:background="@drawable/title_bar_shadow"
+            android:text="@string/no_contact_details"
+            android:textSize="20sp"
+            android:textColor="?android:attr/textColorSecondary"
+            android:paddingLeft="10dip"
+            android:paddingRight="10dip"
+            android:paddingTop="10dip"
+            android:lineSpacingMultiplier="0.92"
         />
-        </FrameLayout>
+    </ScrollView>
             
 </LinearLayout>
 
diff --git a/src/com/android/contacts/ViewContactActivity.java b/src/com/android/contacts/ViewContactActivity.java
index e6dd623..06296cc 100644
--- a/src/com/android/contacts/ViewContactActivity.java
+++ b/src/com/android/contacts/ViewContactActivity.java
@@ -82,6 +82,7 @@
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.ListView;
+import android.widget.ScrollView;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -168,7 +169,6 @@
         finish();
     }
 
-    private FrameLayout mTabContentLayout;
     private ListView mListView;
     private boolean mShowSmsLinksForAllPhones;
 
@@ -200,13 +200,11 @@
 
         mHandler = new NotifyingAsyncQueryHandler(this, this);
 
-        mListView = new ListView(this);
+        mListView = (ListView) findViewById(R.id.contact_data);
         mListView.setOnCreateContextMenuListener(this);
         mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
         mListView.setOnItemClickListener(this);
-
-        mTabContentLayout = (FrameLayout) findViewById(android.R.id.tabcontent);
-        mTabContentLayout.addView(mListView);
+        mListView.setEmptyView((ScrollView) findViewById(android.R.id.empty));
 
         mResolver = getContentResolver();
 
@@ -273,13 +271,13 @@
                         .setPositiveButton(android.R.string.ok, this)
                         .setCancelable(false)
                         .create();
-	    case DIALOG_CONFIRM_READONLY_HIDE: {
+            case DIALOG_CONFIRM_READONLY_HIDE: {
                 return 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, this)
-			.create();
+                        .create();
             }
 
         }
@@ -509,15 +507,15 @@
             }
             case R.id.menu_delete: {
                 // Get confirmation
-		if (mReadOnlySourcesCnt > 0 & mWritableSourcesCnt > 0) {
+                if (mReadOnlySourcesCnt > 0 & mWritableSourcesCnt > 0) {
                     showDialog(DIALOG_CONFIRM_READONLY_DELETE);
-		} else if (mReadOnlySourcesCnt > 0 && mWritableSourcesCnt == 0) {
+                } else if (mReadOnlySourcesCnt > 0 && mWritableSourcesCnt == 0) {
                     showDialog(DIALOG_CONFIRM_READONLY_HIDE);
-		} else if (mReadOnlySourcesCnt == 0 && mWritableSourcesCnt > 1) {
-		    showDialog(DIALOG_CONFIRM_MULTIPLE_DELETE);
-		} else {
-		    showDialog(DIALOG_CONFIRM_DELETE);
-		}
+                } else if (mReadOnlySourcesCnt == 0 && mWritableSourcesCnt > 1) {
+                    showDialog(DIALOG_CONFIRM_MULTIPLE_DELETE);
+                } else {
+                    showDialog(DIALOG_CONFIRM_DELETE);
+                }
                 return true;
             }
             case R.id.menu_join: {
@@ -714,15 +712,15 @@
             }
 
             case KeyEvent.KEYCODE_DEL: {
-		if (mReadOnlySourcesCnt > 0 & mWritableSourcesCnt > 0) {
+                if (mReadOnlySourcesCnt > 0 & mWritableSourcesCnt > 0) {
                     showDialog(DIALOG_CONFIRM_READONLY_DELETE);
-		} else if (mReadOnlySourcesCnt > 0 && mWritableSourcesCnt == 0) {
+                } else if (mReadOnlySourcesCnt > 0 && mWritableSourcesCnt == 0) {
                     showDialog(DIALOG_CONFIRM_READONLY_HIDE);
-		} else if (mReadOnlySourcesCnt == 0 && mWritableSourcesCnt > 1) {
-		    showDialog(DIALOG_CONFIRM_MULTIPLE_DELETE);
-		} else {
-		    showDialog(DIALOG_CONFIRM_DELETE);
-		}
+                } else if (mReadOnlySourcesCnt == 0 && mWritableSourcesCnt > 1) {
+                    showDialog(DIALOG_CONFIRM_MULTIPLE_DELETE);
+                } else {
+                    showDialog(DIALOG_CONFIRM_DELETE);
+                }
                 return true;
             }
         }
@@ -792,8 +790,8 @@
                     mReadOnlySourcesCnt += 1;
                 } else {
                     mWritableSourcesCnt += 1;
-		    mWritableRawContactIds.add(rawContactId);
-		}
+                    mWritableRawContactIds.add(rawContactId);
+                }
 
 
                 for (NamedContentValues subValue : entity.getSubValues()) {