Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 176d677f authored by Tingting Wang's avatar Tingting Wang Committed by Android (Google) Code Review
Browse files

Merge "Hide invisible contacts in suggestion card." into ub-contactsdialer-a-dev

parents 2e569510 e5e6a2ac
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.os.Handler;
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 @@ public class AggregationSuggestionEngine extends HandlerThread {
    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 @@ public class AggregationSuggestionEngine extends HandlerThread {
        mSuggestionsLimit = suggestionsLimit;
    }

    public void setPruneInvisibleContacts (boolean pruneInvisibleContacts) {
        mPruneInvisibleContacts = pruneInvisibleContacts;
    }

    public void setListener(Listener listener) {
        mListener = listener;
    }
@@ -377,6 +383,27 @@ public class AggregationSuggestionEngine extends HandlerThread {
    }

    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 @@ public class AggregationSuggestionEngine extends HandlerThread {
            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;
+1 −0
Original line number Diff line number Diff line
@@ -1316,6 +1316,7 @@ public class QuickContactActivity extends ContactsActivity
            mAggregationSuggestionEngine.setListener(this);
            mAggregationSuggestionEngine.setSuggestionsLimit(getResources().getInteger(
                    R.integer.quickcontact_suggestions_limit));
            mAggregationSuggestionEngine.setPruneInvisibleContacts(true);
            mAggregationSuggestionEngine.start();
        }