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

Commit b0ceb1f7 authored by Tingting Wang's avatar Tingting Wang Committed by android-build-merger
Browse files

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

am: 176d677f

* commit '176d677f':
  Hide invisible contacts in suggestion card.
parents f247c622 176d677f
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();
        }