Show app icon on Phone search UI.

Change-Id: I2c09ed6635b27042c7c98bb40c41fa1724e533db
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index c63f76a..9c6e243 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -340,6 +340,10 @@
         public void onShortcutIntentCreated(Intent intent) {
             returnPickerResult(intent);
         }
+
+        public void onHomeInActionBarSelected() {
+            ContactSelectionActivity.this.onBackPressed();
+        }
     }
 
     private final class PostalAddressPickerActionListener implements
diff --git a/src/com/android/contacts/activities/DialtactsActivity.java b/src/com/android/contacts/activities/DialtactsActivity.java
index 37da553..bc89d2d 100644
--- a/src/com/android/contacts/activities/DialtactsActivity.java
+++ b/src/com/android/contacts/activities/DialtactsActivity.java
@@ -202,6 +202,11 @@
                 public void onShortcutIntentCreated(Intent intent) {
                     Log.w(TAG, "Unsupported intent has come (" + intent + "). Ignoring.");
                 }
+
+                @Override
+                public void onHomeInActionBarSelected() {
+                    exitSearchUi();
+                }
     };
 
     /**
@@ -652,6 +657,8 @@
 
         actionBar.setDisplayShowCustomEnabled(true);
         actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+        actionBar.setDisplayShowHomeEnabled(true);
+        actionBar.setDisplayHomeAsUpEnabled(true);
 
         // Show the search fragment and hide everything else.
         final FragmentTransaction transaction = getFragmentManager().beginTransaction();
@@ -669,6 +676,13 @@
         }
     }
 
+    private void hideInputMethod(View view) {
+        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
+        if (imm != null) {
+            imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
+        }
+    }
+
     /**
      * Goes back to usual Phone UI with tags. Previously selected Tag and associated Fragment
      * should be automatically focused again.
@@ -678,6 +692,7 @@
 
         // We want to hide SearchView and show Tabs. Also focus on previously selected one.
         actionBar.setDisplayShowCustomEnabled(false);
+        actionBar.setDisplayShowHomeEnabled(false);
         actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
 
         final FragmentTransaction transaction = getFragmentManager().beginTransaction();
@@ -686,6 +701,8 @@
 
         mViewPager.setVisibility(View.VISIBLE);
 
+        hideInputMethod(getCurrentFocus());
+
         // Request to update option menu.
         invalidateOptionsMenu();
 
diff --git a/src/com/android/contacts/list/OnPhoneNumberPickerActionListener.java b/src/com/android/contacts/list/OnPhoneNumberPickerActionListener.java
index 1a90122..0077c78 100644
--- a/src/com/android/contacts/list/OnPhoneNumberPickerActionListener.java
+++ b/src/com/android/contacts/list/OnPhoneNumberPickerActionListener.java
@@ -15,6 +15,7 @@
  */
 package com.android.contacts.list;
 
+import android.app.ActionBar;
 import android.content.Intent;
 import android.net.Uri;
 
@@ -32,4 +33,9 @@
      * Returns the selected number as a shortcut intent.
      */
     void onShortcutIntentCreated(Intent intent);
+
+    /**
+     * Called when home menu in {@link ActionBar} is clicked by the user.
+     */
+    void onHomeInActionBarSelected();
 }
diff --git a/src/com/android/contacts/list/PhoneNumberPickerFragment.java b/src/com/android/contacts/list/PhoneNumberPickerFragment.java
index 3be55ce..2976cb4 100644
--- a/src/com/android/contacts/list/PhoneNumberPickerFragment.java
+++ b/src/com/android/contacts/list/PhoneNumberPickerFragment.java
@@ -23,6 +23,7 @@
 import android.net.Uri;
 import android.util.Log;
 import android.view.LayoutInflater;
+import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -51,6 +52,18 @@
         this.mListener = listener;
     }
 
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        final int itemId = item.getItemId();
+        if (itemId == android.R.id.home) {  // See ActionBar#setDisplayHomeAsUpEnabled()
+            if (mListener != null) {
+                mListener.onHomeInActionBarSelected();
+            }
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
     /**
      * @param shortcutAction either {@link Intent#ACTION_CALL} or
      *            {@link Intent#ACTION_SENDTO} or null.