LegacyPhoneNumberListAdapter.java revision c9e810710a7624d645e33ec22e5fb90e30c7780b
1a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov/* 2a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project 3a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * 4a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License"); 5a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * you may not use this file except in compliance with the License. 6a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * You may obtain a copy of the License at 7a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * 8a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * http://www.apache.org/licenses/LICENSE-2.0 9a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * 10a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * Unless required by applicable law or agreed to in writing, software 11a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS, 12a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * See the License for the specific language governing permissions and 14a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * limitations under the License. 15a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov */ 16a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikovpackage com.android.contacts.list; 17a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 18a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikovimport android.content.ContentUris; 19a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikovimport android.content.Context; 203c46291ef057eaf7b7f8ca5971e59bebe734a660Jeff Hamiltonimport android.content.CursorLoader; 21a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikovimport android.database.Cursor; 22a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikovimport android.net.Uri; 23a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikovimport android.provider.Contacts.People; 24a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikovimport android.provider.Contacts.Phones; 25a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikovimport android.provider.ContactsContract.CommonDataKinds.Phone; 26a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikovimport android.view.View; 27a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikovimport android.view.ViewGroup; 28a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 29a0233a048858f1593ea4924e9c5036f39aedbcddChiao Chengimport com.android.contacts.common.list.ContactEntryListAdapter; 30a0233a048858f1593ea4924e9c5036f39aedbcddChiao Chengimport com.android.contacts.common.list.ContactListItemView; 31a0233a048858f1593ea4924e9c5036f39aedbcddChiao Cheng 32a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov/** 33a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * A cursor adapter for the Phones.CONTENT_TYPE content type. 34a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov */ 35a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov@SuppressWarnings("deprecation") 36a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikovpublic class LegacyPhoneNumberListAdapter extends ContactEntryListAdapter { 37a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 38c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov private static final String[] PHONES_PROJECTION = new String[] { 39a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov Phones._ID, // 0 40a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov Phones.TYPE, // 1 41a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov Phones.LABEL, // 2 42a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov Phones.NUMBER, // 3 43a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov People.DISPLAY_NAME, // 4 44a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov People.PHONETIC_NAME, // 5 45a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov }; 46a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 47c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov private static final int PHONE_ID_COLUMN_INDEX = 0; 48c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov private static final int PHONE_TYPE_COLUMN_INDEX = 1; 49c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov private static final int PHONE_LABEL_COLUMN_INDEX = 2; 50c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov private static final int PHONE_NUMBER_COLUMN_INDEX = 3; 51c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov private static final int PHONE_DISPLAY_NAME_COLUMN_INDEX = 4; 52c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov private static final int PHONE_PHONETIC_NAME_COLUMN_INDEX = 5; 53a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 54a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov private CharSequence mUnknownNameText; 55a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 56a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov public LegacyPhoneNumberListAdapter(Context context) { 57a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov super(context); 58a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov mUnknownNameText = context.getText(android.R.string.unknownName); 59a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 60a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 61a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov @Override 62d5061fe322880ee993ea18db331fbc1110ddc538Dmitri Plotnikov public void configureLoader(CursorLoader loader, long directoryId) { 63a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov loader.setUri(Phones.CONTENT_URI); 64a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov loader.setProjection(PHONES_PROJECTION); 65a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov loader.setSortOrder(Phones.DISPLAY_NAME); 66a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 67a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 68a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov @Override 69e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov public String getContactDisplayName(int position) { 70e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov return ((Cursor)getItem(position)).getString(PHONE_DISPLAY_NAME_COLUMN_INDEX); 71a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 72a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 73e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov public Uri getPhoneUri(int position) { 74e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov Cursor cursor = ((Cursor)getItem(position)); 75a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov long id = cursor.getLong(PHONE_ID_COLUMN_INDEX); 76a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov return ContentUris.withAppendedId(Phones.CONTENT_URI, id); 77a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 78a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 79a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov @Override 80551da17c65c434dae14365888996f9157068d800Andrew Lee protected ContactListItemView newView( 81551da17c65c434dae14365888996f9157068d800Andrew Lee Context context, int partition, Cursor cursor, int position, ViewGroup parent) { 82551da17c65c434dae14365888996f9157068d800Andrew Lee final ContactListItemView view = 83551da17c65c434dae14365888996f9157068d800Andrew Lee super.newView(context, partition, cursor, position, parent); 84a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov view.setUnknownNameText(mUnknownNameText); 85a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov return view; 86a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 87a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 88a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov @Override 89e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov protected void bindView(View itemView, int partition, Cursor cursor, int position) { 90c9e810710a7624d645e33ec22e5fb90e30c7780bBrian Attwell super.bindView(itemView, partition, cursor, position); 91a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov ContactListItemView view = (ContactListItemView)itemView; 92a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov bindName(view, cursor); 9356151b82c3dac3908ac8776a2a71f107fb4ecdbcBrian Attwell bindViewId(view, cursor, PHONE_ID_COLUMN_INDEX); 94a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov bindPhoneNumber(view, cursor); 95a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 96a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 97a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov protected void bindName(final ContactListItemView view, Cursor cursor) { 98ed90ea54323f212d87b27b04d7d627192afa6665Daisuke Miyakawa view.showDisplayName(cursor, PHONE_DISPLAY_NAME_COLUMN_INDEX, getContactNameDisplayOrder()); 99a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov view.showPhoneticName(cursor, PHONE_PHONETIC_NAME_COLUMN_INDEX); 100a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 101a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 102a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov protected void bindPhoneNumber(ContactListItemView view, Cursor cursor) { 103a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov CharSequence label = null; 104a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov if (!cursor.isNull(PHONE_TYPE_COLUMN_INDEX)) { 105a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov final int type = cursor.getInt(PHONE_TYPE_COLUMN_INDEX); 106a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov final String customLabel = cursor.getString(PHONE_LABEL_COLUMN_INDEX); 107a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 108a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov // TODO cache 109a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov label = Phone.getTypeLabel(getContext().getResources(), type, customLabel); 110a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 111a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov view.setLabel(label); 112c6d2f865dc518c6dbb19935d080def18da6a91f7Andrew Lee view.setPhoneNumber(cursor.getString(PHONE_NUMBER_COLUMN_INDEX), /* countryIso */ null); 113a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 114a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov} 115