1413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov/*
2413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project
3413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov *
4413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License");
5413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov * you may not use this file except in compliance with the License.
6413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov * You may obtain a copy of the License at
7413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov *
8413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov *      http://www.apache.org/licenses/LICENSE-2.0
9413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov *
10413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov * Unless required by applicable law or agreed to in writing, software
11413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS,
12413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov * See the License for the specific language governing permissions and
14413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov * limitations under the License.
15413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov */
16413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikovpackage com.android.contacts.list;
17413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov
18413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikovimport android.content.ContentUris;
19413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikovimport android.content.Context;
203c46291ef057eaf7b7f8ca5971e59bebe734a660Jeff Hamiltonimport android.content.CursorLoader;
21413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikovimport android.database.Cursor;
22413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikovimport android.net.Uri;
23413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikovimport android.provider.Contacts.People;
24413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikovimport android.view.View;
25413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikovimport android.view.ViewGroup;
26413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov
27413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov/**
28413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov * A cursor adapter for the People.CONTENT_TYPE content type.
29413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov */
30413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov@SuppressWarnings("deprecation")
31413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikovpublic class LegacyContactListAdapter extends ContactEntryListAdapter {
32413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov
33413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    static final String[] PEOPLE_PROJECTION = new String[] {
34413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        People._ID,                         // 0
35413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        People.DISPLAY_NAME,                // 1
36413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        People.PHONETIC_NAME,               // 2
37413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        People.STARRED,                     // 3
38413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        People.PRESENCE_STATUS,             // 4
39413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    };
40413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov
41413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    protected static final int PERSON_ID_COLUMN_INDEX = 0;
42413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    protected static final int PERSON_DISPLAY_NAME_COLUMN_INDEX = 1;
43413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    protected static final int PERSON_PHONETIC_NAME_COLUMN_INDEX = 2;
44413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    protected static final int PERSON_STARRED_COLUMN_INDEX = 3;
45413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    protected static final int PERSON_PRESENCE_STATUS_COLUMN_INDEX = 4;
46413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov
47413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    private CharSequence mUnknownNameText;
48413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov
49413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    public LegacyContactListAdapter(Context context) {
50413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        super(context);
51413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        mUnknownNameText = context.getText(android.R.string.unknownName);
52413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    }
53413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov
54413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    @Override
55d5061fe322880ee993ea18db331fbc1110ddc538Dmitri Plotnikov    public void configureLoader(CursorLoader loader, long directoryId) {
56413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        loader.setUri(People.CONTENT_URI);
57413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        loader.setProjection(PEOPLE_PROJECTION);
58413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        loader.setSortOrder(People.DISPLAY_NAME);
59413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    }
60413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov
61413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    @Override
62e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    public String getContactDisplayName(int position) {
63e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        return ((Cursor)getItem(position)).getString(PERSON_DISPLAY_NAME_COLUMN_INDEX);
64413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    }
65413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov
66e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    public Uri getPersonUri(int position) {
67e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov        Cursor cursor = ((Cursor)getItem(position));
68413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        long personId = cursor.getLong(PERSON_ID_COLUMN_INDEX);
69413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        return ContentUris.withAppendedId(People.CONTENT_URI, personId);
70413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    }
71413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov
72413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    @Override
73551da17c65c434dae14365888996f9157068d800Andrew Lee    protected ContactListItemView newView(
74551da17c65c434dae14365888996f9157068d800Andrew Lee            Context context, int partition, Cursor cursor, int position, ViewGroup parent) {
75413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        final ContactListItemView view = new ContactListItemView(context, null);
76413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        view.setUnknownNameText(mUnknownNameText);
77413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        return view;
78413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    }
79413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov
80413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    @Override
81e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov    protected void bindView(View itemView, int partition, Cursor cursor, int position) {
82c9e810710a7624d645e33ec22e5fb90e30c7780bBrian Attwell        super.bindView(itemView, partition, cursor, position);
83413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        ContactListItemView view = (ContactListItemView)itemView;
84413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        bindName(view, cursor);
8556151b82c3dac3908ac8776a2a71f107fb4ecdbcBrian Attwell        bindViewId(view, cursor, PERSON_ID_COLUMN_INDEX);
86413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        bindPresence(view, cursor);
87413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    }
88413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov
89413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    protected void bindName(final ContactListItemView view, Cursor cursor) {
90ed90ea54323f212d87b27b04d7d627192afa6665Daisuke Miyakawa        view.showDisplayName(cursor, PERSON_DISPLAY_NAME_COLUMN_INDEX,
91da5bf1cf60beef3de5e651a569fa544293683926Dave Santoro                getContactNameDisplayOrder());
92413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov        view.showPhoneticName(cursor, PERSON_PHONETIC_NAME_COLUMN_INDEX);
93413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    }
94413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov
95413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    protected void bindPresence(final ContactListItemView view, Cursor cursor) {
96f443194c03dd9ecfeecd3e6ef1fabb0945ada645Frank Sposaro        view.showPresenceAndStatusMessage(cursor, PERSON_PRESENCE_STATUS_COLUMN_INDEX, 0);
97413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov    }
98413772711054c9fca8bf0c22bc81f613c883ae7eDmitri Plotnikov}
99