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();