Fixing join contact functionality, including search

Change-Id: I3fe1f6270175cbdd13448c1adecbad1ee96d2fac
diff --git a/src/com/android/contacts/JoinContactActivity.java b/src/com/android/contacts/JoinContactActivity.java
index 0f3eab0..708da8a 100644
--- a/src/com/android/contacts/JoinContactActivity.java
+++ b/src/com/android/contacts/JoinContactActivity.java
@@ -17,8 +17,11 @@
 package com.android.contacts;
 
 
+import com.android.contacts.list.ContactEntryListFragment;
+import com.android.contacts.list.ContactsRequest;
 import com.android.contacts.list.JoinContactListFragment;
 import com.android.contacts.list.OnContactPickerActionListener;
+import com.android.contacts.ui.ContactsPreferencesActivity;
 
 import android.app.Activity;
 import android.app.FragmentTransaction;
@@ -26,7 +29,12 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.ContactsContract;
+import android.provider.Settings;
+import android.provider.ContactsContract.Contacts;
 import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
 
 /**
  * An activity that shows a list of contacts that can be joined with the target contact.
@@ -52,6 +60,8 @@
 
     private long mTargetContactId;
 
+    private JoinContactListFragment mListFragment;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -66,9 +76,9 @@
             return;
         }
 
-        JoinContactListFragment fragment = new JoinContactListFragment();
-        fragment.setTargetContactId(mTargetContactId);
-        fragment.setOnContactPickerActionListener(new OnContactPickerActionListener() {
+        mListFragment = new JoinContactListFragment();
+        mListFragment.setTargetContactId(mTargetContactId);
+        mListFragment.setOnContactPickerActionListener(new OnContactPickerActionListener() {
             public void onPickContactAction(Uri contactUri) {
                 Intent intent = new Intent(null, contactUri);
                 setResult(RESULT_OK, intent);
@@ -86,7 +96,43 @@
         });
 
         FragmentTransaction transaction = openFragmentTransaction();
-        transaction.add(android.R.id.content, fragment);
+        transaction.add(android.R.id.content, mListFragment);
         transaction.commit();
     }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        MenuInflater inflater = getMenuInflater();
+        inflater.inflate(R.menu.search, menu);
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.menu_search: {
+                onSearchRequested();
+                return true;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public void startSearch(String initialQuery, boolean selectInitialQuery, Bundle appSearchData,
+            boolean globalSearch) {
+        if (globalSearch) {
+            super.startSearch(initialQuery, selectInitialQuery, appSearchData, globalSearch);
+        } else {
+            mListFragment.startSearch(initialQuery);
+        }
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == ContactEntryListFragment.ACTIVITY_REQUEST_CODE_PICKER
+                && resultCode == RESULT_OK) {
+            mListFragment.onPickerResult(data);
+        }
+    }
 }