JoinContactListAdapter.java revision d5061fe322880ee993ea18db331fbc1110ddc538
16e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov/*
26e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project
36e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov *
46e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License");
56e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov * you may not use this file except in compliance with the License.
66e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov * You may obtain a copy of the License at
76e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov *
86e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov *      http://www.apache.org/licenses/LICENSE-2.0
96e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov *
106e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov * Unless required by applicable law or agreed to in writing, software
116e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS,
126e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov * See the License for the specific language governing permissions and
146e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov * limitations under the License.
156e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov */
166e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikovpackage com.android.contacts.list;
176e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
186e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikovimport com.android.contacts.R;
196e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
20e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikovimport android.content.Context;
213c46291ef057eaf7b7f8ca5971e59bebe734a660Jeff Hamiltonimport android.content.CursorLoader;
226e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikovimport android.database.Cursor;
23e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikovimport android.database.MatrixCursor;
24e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikovimport android.net.Uri;
25e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikovimport android.net.Uri.Builder;
26e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikovimport android.provider.ContactsContract;
27e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikovimport android.provider.ContactsContract.Contacts;
28e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikovimport android.provider.ContactsContract.Contacts.AggregationSuggestions;
29e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikovimport android.text.TextUtils;
306e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikovimport android.view.LayoutInflater;
316e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikovimport android.view.View;
326e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikovimport android.view.ViewGroup;
336e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikovimport android.widget.TextView;
346e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
35e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikovpublic class JoinContactListAdapter extends ContactListAdapter {
36e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov
37e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    /** Maximum number of suggestions shown for joining aggregates */
38e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    private static final int MAX_SUGGESTIONS = 4;
39e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov
40e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    public static final int PARTITION_SUGGESTIONS = 0;
41e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    public static final int PARTITION_SHOW_ALL_CONTACTS = 1;
42e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    public static final int PARTITION_ALL_CONTACTS = 2;
43e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov
44e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    private long mTargetContactId;
456e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
46e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    private int mShowAllContactsViewType;
47e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov
486e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    /**
496e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov     * Determines whether we display a list item with the label
506e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov     * "Show all contacts" or actually show all contacts
516e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov     */
52e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    private boolean mAllContactsListShown;
536e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
54e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov
55e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    public JoinContactListAdapter(Context context) {
566e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov        super(context);
57e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        setPinnedPartitionHeadersEnabled(true);
58e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        setSectionHeaderDisplayEnabled(true);
59e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        setIndexedPartition(PARTITION_ALL_CONTACTS);
60e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        mShowAllContactsViewType = super.getViewTypeCount();
61e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    }
62e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov
63e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    @Override
64e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    protected void addPartitions() {
65e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov
66e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        // Partition 0: suggestions
67e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        addPartition(false, true);
68e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov
69e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        // Partition 1: "Show all contacts"
70e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        addPartition(false, false);
71e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov
72e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        // Partition 2: All contacts
73e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        addPartition(false, true);
746e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    }
756e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
76e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    public void setTargetContactId(long targetContactId) {
77e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        this.mTargetContactId = targetContactId;
786e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    }
796e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
80e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    @Override
81d5061fe322880ee993ea18db331fbc1110ddc538Dmitri Plotnikov    public void configureLoader(CursorLoader cursorLoader, long directoryId) {
82e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        JoinContactLoader loader = (JoinContactLoader)cursorLoader;
83e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        loader.setLoadSuggestionsAndAllContacts(mAllContactsListShown);
84e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov
85e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        Builder builder = Contacts.CONTENT_URI.buildUpon();
86e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        builder.appendEncodedPath(String.valueOf(mTargetContactId));
87e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        builder.appendEncodedPath(AggregationSuggestions.CONTENT_DIRECTORY);
88e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov
89e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        String filter = getQueryString();
90e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        if (!TextUtils.isEmpty(filter)) {
91e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov            builder.appendEncodedPath(Uri.encode(filter));
92e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        }
93e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov
94e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        builder.appendQueryParameter("limit", String.valueOf(MAX_SUGGESTIONS));
95e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov
96e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        loader.setSuggestionUri(builder.build());
97e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov
98e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        // TODO simplify projection
99e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        loader.setProjection(PROJECTION);
100e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        loader.setUri(buildSectionIndexerUri(Contacts.CONTENT_URI));
101e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        loader.setSelection(Contacts.IN_VISIBLE_GROUP + "=1 AND " + Contacts._ID + "!=?");
102e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        loader.setSelectionArgs(new String[]{String.valueOf(mTargetContactId)});
103e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        if (getSortOrder() == ContactsContract.Preferences.SORT_ORDER_PRIMARY) {
104e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            loader.setSortOrder(Contacts.SORT_KEY_PRIMARY);
105e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        } else {
106e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            loader.setSortOrder(Contacts.SORT_KEY_ALTERNATIVE);
107e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        }
108e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    }
109e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov
110e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    @Override
111e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    public boolean isEmpty() {
112e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        return false;
113e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    }
114e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov
115e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    public boolean isAllContactsListShown() {
116e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        return mAllContactsListShown;
117e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    }
118e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov
119e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    public void setAllContactsListShown(boolean flag) {
120e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        mAllContactsListShown = flag;
1216e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    }
1226e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
1236e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    public void setSuggestionsCursor(Cursor cursor) {
124e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        changeCursor(PARTITION_SUGGESTIONS, cursor);
125e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        if (cursor != null && cursor.getCount() != 0 && !mAllContactsListShown) {
126e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            changeCursor(PARTITION_SHOW_ALL_CONTACTS, getShowAllContactsLabelCursor());
1276e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov        } else {
128e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            changeCursor(PARTITION_SHOW_ALL_CONTACTS, null);
129e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        }
130e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    }
131e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov
1326e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    @Override
1336e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    public void changeCursor(Cursor cursor) {
134e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        changeCursor(PARTITION_ALL_CONTACTS, cursor);
1356e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    }
136e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov
1376e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    @Override
138e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    public int getViewTypeCount() {
139e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        return super.getViewTypeCount() + 1;
1406e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    }
1416e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
142e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    @Override
143e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    protected int getItemViewType(int partition, int position) {
144e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        if (partition == PARTITION_SHOW_ALL_CONTACTS) {
145e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            return mShowAllContactsViewType;
1466e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov        }
147e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        return super.getItemViewType(partition, position);
148e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    }
149e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov
150e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov    @Override
151e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    protected View newHeaderView(Context context, int partition, Cursor cursor,
152e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            ViewGroup parent) {
153e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        switch (partition) {
154e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            case PARTITION_SUGGESTIONS: {
155e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov              TextView view = (TextView) inflate(R.layout.list_separator, parent);
156e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov              view.setText(R.string.separatorJoinAggregateSuggestions);
157e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov              return view;
158e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            }
159e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            case PARTITION_ALL_CONTACTS: {
160e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov              TextView view = (TextView) inflate(R.layout.list_separator, parent);
161e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov              view.setText(R.string.separatorJoinAggregateAll);
162e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov              return view;
163e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            }
1646e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov        }
1656e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
166e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        return null;
1676e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    }
1686e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
1696e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    @Override
170e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    protected View newView(Context context, int partition, Cursor cursor, int position,
171e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            ViewGroup parent) {
172e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        switch (partition) {
173e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            case PARTITION_SUGGESTIONS:
174e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            case PARTITION_ALL_CONTACTS:
175e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov                return super.newView(context, partition, cursor, position, parent);
176e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            case PARTITION_SHOW_ALL_CONTACTS:
177e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov                return inflate(R.layout.contacts_list_show_all_item, parent);
1786e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov        }
179e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        return null;
1806e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    }
1816e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
182e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    private View inflate(int layoutId, ViewGroup parent) {
183e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        return LayoutInflater.from(getContext()).inflate(layoutId, parent, false);
1846e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    }
1856e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
1866e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    @Override
187e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    protected void bindView(View itemView, int partition, Cursor cursor, int position) {
188e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        switch (partition) {
189e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            case PARTITION_SUGGESTIONS: {
190e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov                final ContactListItemView view = (ContactListItemView)itemView;
191e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov                bindPhoto(view, cursor);
192e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov                bindName(view, cursor);
193e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov                break;
194e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov            }
195e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            case PARTITION_SHOW_ALL_CONTACTS: {
196e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov                break;
197e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            }
198e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            case PARTITION_ALL_CONTACTS: {
199e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov                final ContactListItemView view = (ContactListItemView)itemView;
200e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov                bindSectionHeaderAndDivider(view, position);
201e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov                bindPhoto(view, cursor);
202e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov                bindName(view, cursor);
203e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov                break;
2046e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov            }
2056e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov        }
2066e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    }
2076e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
208e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    public Cursor getShowAllContactsLabelCursor() {
209e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        MatrixCursor matrixCursor = new MatrixCursor(PROJECTION);
210e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        Object[] row = new Object[PROJECTION.length];
211e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        matrixCursor.addRow(row);
212e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        return matrixCursor;
2136e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    }
2146e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov
215e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    @Override
216e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    public Uri getContactUri(Cursor cursor) {
217e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        long contactId = cursor.getLong(CONTACT_ID_COLUMN_INDEX);
218e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        String lookupKey = cursor.getString(CONTACT_LOOKUP_KEY_COLUMN_INDEX);
219e4d32d92b10c1c1ce89c7a3ee4111a030e6afcf9Dmitri Plotnikov        return Contacts.getLookupUri(contactId, lookupKey);
2206e2009d58fdcf098cab033729d4a3b2444c2181cDmitri Plotnikov    }
221e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov}
222