Merge "Hide invisible contacts in suggestion card." into ub-contactsdialer-a-dev
diff --git a/src/com/android/contacts/editor/AggregationSuggestionEngine.java b/src/com/android/contacts/editor/AggregationSuggestionEngine.java
index 14da019..4423a61 100644
--- a/src/com/android/contacts/editor/AggregationSuggestionEngine.java
+++ b/src/com/android/contacts/editor/AggregationSuggestionEngine.java
@@ -25,6 +25,7 @@
import android.os.HandlerThread;
import android.os.Message;
import android.os.Process;
+import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Nickname;
import android.provider.ContactsContract.CommonDataKinds.Phone;
@@ -115,6 +116,7 @@
private ContentObserver mContentObserver;
private Uri mSuggestionsUri;
private int mSuggestionsLimit = 3;
+ private boolean mPruneInvisibleContacts;
public AggregationSuggestionEngine(Context context) {
super("AggregationSuggestions", Process.THREAD_PRIORITY_BACKGROUND);
@@ -150,6 +152,10 @@
mSuggestionsLimit = suggestionsLimit;
}
+ public void setPruneInvisibleContacts (boolean pruneInvisibleContacts) {
+ mPruneInvisibleContacts = pruneInvisibleContacts;
+ }
+
public void setListener(Listener listener) {
mListener = listener;
}
@@ -377,6 +383,27 @@
}
public List<Suggestion> getSuggestions() {
+ final ArrayList<Long> visibleContacts = new ArrayList<>();
+ if (mPruneInvisibleContacts) {
+ final Uri contactFilterUri = Data.CONTENT_URI.buildUpon()
+ .appendQueryParameter(Data.VISIBLE_CONTACTS_ONLY, "true")
+ .build();
+ final ContentResolver contentResolver = mContext.getContentResolver();
+ final Cursor contactCursor = contentResolver.query(contactFilterUri,
+ new String[]{Data.CONTACT_ID}, null, null, null);
+ try {
+ if (contactCursor != null) {
+ while (contactCursor.moveToNext()) {
+ final long contactId = contactCursor.getLong(0);
+ visibleContacts.add(contactId);
+ }
+ }
+ } finally {
+ contactCursor.close();
+ }
+
+ }
+
ArrayList<Suggestion> list = Lists.newArrayList();
if (mDataCursor != null) {
Suggestion suggestion = null;
@@ -384,6 +411,9 @@
mDataCursor.moveToPosition(-1);
while (mDataCursor.moveToNext()) {
long contactId = mDataCursor.getLong(DataQuery.CONTACT_ID);
+ if (mPruneInvisibleContacts && !visibleContacts.contains(contactId)) {
+ continue;
+ }
if (contactId != currentContactId) {
suggestion = new Suggestion();
suggestion.contactId = contactId;
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index d501e77..bc2ef53 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -1316,6 +1316,7 @@
mAggregationSuggestionEngine.setListener(this);
mAggregationSuggestionEngine.setSuggestionsLimit(getResources().getInteger(
R.integer.quickcontact_suggestions_limit));
+ mAggregationSuggestionEngine.setPruneInvisibleContacts(true);
mAggregationSuggestionEngine.start();
}