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

Commit e5e6a2ac authored by Tingting Wang's avatar Tingting Wang
Browse files

Hide invisible contacts in suggestion card.

Only show visible contacts in Quick contact suggestion card.

BUG 25186736

Change-Id: I56cd2d9bbd75772940d81582d2196bcbce0bf209
parent 6d3b45ed
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();
        }