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

Commit 2697cbc9 authored by Isaac Katzenelson's avatar Isaac Katzenelson
Browse files

Fix snippetizing cursor

5217242 Email address with the found "snippet" highlighted should
        be displayed on the second line below the contact name

Added snippeting code to client side.
Changed URI to ask for deferred snippeting

Change-Id: Ie5edee9a83d95990c95aa41ff44be0169bb9964d
parent 7a330308
Loading
Loading
Loading
Loading
+26 −1
Original line number Diff line number Diff line
@@ -33,6 +33,9 @@ import android.graphics.Color;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import android.text.TextUtils;
import android.text.TextUtils.TruncateAt;
import android.util.AttributeSet;
@@ -46,6 +49,11 @@ import android.widget.ImageView.ScaleType;
import android.widget.QuickContactBadge;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * A custom view for an item in the contact list.
 * The view contains the contact's photo, a set of text views (for name, status, etc...) and
@@ -1094,8 +1102,25 @@ public class ContactListItemView extends ViewGroup
            setSnippet(null);
            return;
        }
        String snippet;
        String columnContent = cursor.getString(summarySnippetColumnIndex);

        // Do client side snippeting if provider didn't do it
        Bundle extras = cursor.getExtras();
        if (extras.getBoolean(ContactsContract.DEFERRED_SNIPPETING)) {
            int displayNameIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);

            snippet = ContactsContract.snippetize(columnContent,
                    displayNameIndex < 0 ? null : cursor.getString(displayNameIndex),
                            extras.getString(ContactsContract.DEFERRED_SNIPPETING_QUERY),
                            DefaultContactListAdapter.SNIPPET_START_MATCH,
                            DefaultContactListAdapter.SNIPPET_END_MATCH,
                            DefaultContactListAdapter.SNIPPET_ELLIPSIS,
                            DefaultContactListAdapter.SNIPPET_MAX_TOKENS);
        } else {
            snippet = columnContent;
        }

        String snippet = cursor.getString(summarySnippetColumnIndex);
        if (snippet != null) {
            int from = 0;
            int to = snippet.length();
+1 −0
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ public class DefaultContactListAdapter extends ContactListAdapter {
                }
                builder.appendQueryParameter(SearchSnippetColumns.SNIPPET_ARGS_PARAM_KEY,
                        SNIPPET_ARGS);
                builder.appendQueryParameter(SearchSnippetColumns.DEFERRED_SNIPPETING_KEY,"1");
                loader.setUri(builder.build());
                loader.setProjection(FILTER_PROJECTION);
            }