LegacyPhoneNumberListAdapter.java revision c28390b65183a2e1bf85f381ba27bf846706c04a
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.app.patterns.CursorLoader; 19a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikovimport android.content.ContentUris; 20a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikovimport android.content.Context; 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 29a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov/** 30a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov * A cursor adapter for the Phones.CONTENT_TYPE content type. 31a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov */ 32a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov@SuppressWarnings("deprecation") 33a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikovpublic class LegacyPhoneNumberListAdapter extends ContactEntryListAdapter { 34a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 35c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov private static final String[] PHONES_PROJECTION = new String[] { 36a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov Phones._ID, // 0 37a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov Phones.TYPE, // 1 38a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov Phones.LABEL, // 2 39a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov Phones.NUMBER, // 3 40a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov People.DISPLAY_NAME, // 4 41a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov People.PHONETIC_NAME, // 5 42a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov }; 43a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 44c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov private static final int PHONE_ID_COLUMN_INDEX = 0; 45c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov private static final int PHONE_TYPE_COLUMN_INDEX = 1; 46c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov private static final int PHONE_LABEL_COLUMN_INDEX = 2; 47c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov private static final int PHONE_NUMBER_COLUMN_INDEX = 3; 48c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov private static final int PHONE_DISPLAY_NAME_COLUMN_INDEX = 4; 49c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov private static final int PHONE_PHONETIC_NAME_COLUMN_INDEX = 5; 50a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 51a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov private CharSequence mUnknownNameText; 52a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 53a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov public LegacyPhoneNumberListAdapter(Context context) { 54a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov super(context); 55a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov mUnknownNameText = context.getText(android.R.string.unknownName); 56a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 57a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 58a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov @Override 59a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov public void configureLoader(CursorLoader loader) { 60a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov loader.setUri(Phones.CONTENT_URI); 61a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov loader.setProjection(PHONES_PROJECTION); 62a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov loader.setSortOrder(Phones.DISPLAY_NAME); 63a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 64a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 65a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov @Override 66a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov public String getContactDisplayName() { 67a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov return getCursor().getString(PHONE_DISPLAY_NAME_COLUMN_INDEX); 68a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 69a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 70a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov public Uri getPhoneUri() { 71a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov Cursor cursor = getCursor(); 72a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov long id = cursor.getLong(PHONE_ID_COLUMN_INDEX); 73a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov return ContentUris.withAppendedId(Phones.CONTENT_URI, id); 74a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 75a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 76a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov @Override 77a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov public View newView(Context context, Cursor cursor, ViewGroup parent) { 78a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov final ContactListItemView view = new ContactListItemView(context, null); 79a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov view.setUnknownNameText(mUnknownNameText); 80a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov return view; 81a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 82a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 83a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov @Override 84a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov public void bindView(View itemView, Context context, Cursor cursor) { 85a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov ContactListItemView view = (ContactListItemView)itemView; 86a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov bindName(view, cursor); 87a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov bindPhoneNumber(view, cursor); 88a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 89a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 90a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov protected void bindName(final ContactListItemView view, Cursor cursor) { 91a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov view.showDisplayName(cursor, PHONE_DISPLAY_NAME_COLUMN_INDEX, false, 0); 92a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov view.showPhoneticName(cursor, PHONE_PHONETIC_NAME_COLUMN_INDEX); 93a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 94a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 95a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov protected void bindPhoneNumber(ContactListItemView view, Cursor cursor) { 96a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov CharSequence label = null; 97a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov if (!cursor.isNull(PHONE_TYPE_COLUMN_INDEX)) { 98a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov final int type = cursor.getInt(PHONE_TYPE_COLUMN_INDEX); 99a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov final String customLabel = cursor.getString(PHONE_LABEL_COLUMN_INDEX); 100a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov 101a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov // TODO cache 102a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov label = Phone.getTypeLabel(getContext().getResources(), type, customLabel); 103a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 104a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov view.setLabel(label); 105a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov view.showData(cursor, PHONE_NUMBER_COLUMN_INDEX); 106a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov } 107a3569b2e2c9eed2c09449ec8ed64909337462f14Dmitri Plotnikov} 108