Adding support for relationship navigation

Bug: 3362300
Change-Id: I3b281b4db8bdeb029fdb4981e9c6e5b3b3060c7e
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index fc476d1..5f0de7b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -249,6 +249,7 @@
             <intent-filter>
                 <action android:name="android.intent.action.SEARCH" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <data android:mimeType="vnd.android.cursor.dir/contact" />
             </intent-filter>
 
             <intent-filter>
diff --git a/src/com/android/contacts/activities/ContactBrowserActivity.java b/src/com/android/contacts/activities/ContactBrowserActivity.java
index 1da94de..f934e6a 100644
--- a/src/com/android/contacts/activities/ContactBrowserActivity.java
+++ b/src/com/android/contacts/activities/ContactBrowserActivity.java
@@ -286,6 +286,7 @@
                     break;
             }
 
+            mSearchMode = mRequest.isSearchMode();
             if (filter != null) {
                 mContactListFilterController.setContactListFilter(filter, false);
                 mSearchMode = false;
@@ -357,6 +358,7 @@
             mListFragment.setSelectedContactUri(contactUri);
         }
 
+        mListFragment.setSearchMode(mRequest.isSearchMode());
         mListFragment.setQueryString(mRequest.getQueryString());
 
         if (mRequest.isDirectorySearchEnabled()) {
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index 309ee84..bed532d 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -42,6 +42,7 @@
 import android.app.Fragment;
 import android.app.LoaderManager;
 import android.app.LoaderManager.LoaderCallbacks;
+import android.app.SearchManager;
 import android.content.ActivityNotFoundException;
 import android.content.ClipboardManager;
 import android.content.ContentUris;
@@ -539,6 +540,9 @@
                     entry.uri = null;
                     mOtherEntries.add(entry);
                 } else if (Relation.CONTENT_ITEM_TYPE.equals(mimeType) && hasData) {
+                    entry.intent = new Intent(Intent.ACTION_SEARCH);
+                    entry.intent.putExtra(SearchManager.QUERY, entry.data);
+                    entry.intent.setType(Contacts.CONTENT_TYPE);
                     mRelationEntries.add(entry);
                 } else {
                     // Handle showing custom rows
diff --git a/src/com/android/contacts/list/ContactListAdapter.java b/src/com/android/contacts/list/ContactListAdapter.java
index ed38fa3..2183622 100644
--- a/src/com/android/contacts/list/ContactListAdapter.java
+++ b/src/com/android/contacts/list/ContactListAdapter.java
@@ -322,9 +322,8 @@
                     break;
                 }
             }
-            if (mSelectedContactId != 0 &&
-                    mSelectedContactDirectoryId !=  Directory.DEFAULT &&
-                    mSelectedContactDirectoryId !=  Directory.LOCAL_INVISIBLE) {
+            if (mSelectedContactId != 0 && (mSelectedContactDirectoryId == Directory.DEFAULT
+                    || mSelectedContactDirectoryId == Directory.LOCAL_INVISIBLE)) {
                 long contactId = cursor.getLong(CONTACT_ID_COLUMN_INDEX);
                 if (contactId == mSelectedContactId) {
                     offset = cursor.getPosition();