1b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira/* 2b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * Copyright (C) 2011 The Android Open Source Project 3b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * 4b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * Licensed under the Apache License, Version 2.0 (the "License"); 5b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * you may not use this file except in compliance with the License. 6b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * You may obtain a copy of the License at 7b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * 8b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * http://www.apache.org/licenses/LICENSE-2.0 9b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * 10b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * Unless required by applicable law or agreed to in writing, software 11b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * distributed under the License is distributed on an "AS IS" BASIS, 12b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * See the License for the specific language governing permissions and 14b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * limitations under the License. 15b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira */ 16b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 17b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereirapackage com.android.ex.chips; 18b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 19b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereiraimport android.graphics.drawable.Drawable; 206f9f2858818228eaa1f2a2c562f4d2da6a4216b3Mindy Pereiraimport android.text.TextUtils; 2197b873c0ba4f31b7e14abad8d873c35e66f7dc41Mindy Pereiraimport android.text.style.DynamicDrawableSpan; 22b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereiraimport android.text.style.ImageSpan; 23b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 24b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira/** 25b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * RecipientChip defines an ImageSpan that contains information relevant to a 26b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * particular recipient. 27b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira */ 28b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira/* package */class RecipientChip extends ImageSpan { 29b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira private final CharSequence mDisplay; 30b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 31b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira private final CharSequence mValue; 32b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 33b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira private final long mContactId; 34b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 35b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira private final long mDataId; 36b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 37b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira private RecipientEntry mEntry; 38b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 39b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira private boolean mSelected = false; 40b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 416f9f2858818228eaa1f2a2c562f4d2da6a4216b3Mindy Pereira private CharSequence mOriginalText; 42b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 43b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira public RecipientChip(Drawable drawable, RecipientEntry entry, int offset) { 44dd5c5cf8541ca41b70f396c4ee3152c069b2b72dMindy Pereira super(drawable, DynamicDrawableSpan.ALIGN_BOTTOM); 45b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira mDisplay = entry.getDisplayName(); 468b308552260807ba6611a4ab3bb23f0211608767Mindy Pereira mValue = entry.getDestination().trim(); 47b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira mContactId = entry.getContactId(); 48b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira mDataId = entry.getDataId(); 49b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira mEntry = entry; 50b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira } 51b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 52b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira /** 53b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * Set the selected state of the chip. 54b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * @param selected 55b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira */ 56b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira public void setSelected(boolean selected) { 57b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira mSelected = selected; 58b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira } 59b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 60b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira /** 61b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * Return true if the chip is selected. 62b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira */ 63b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira public boolean isSelected() { 64b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira return mSelected; 65b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira } 66b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 67b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira /** 68b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * Get the text displayed in the chip. 69b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira */ 70b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira public CharSequence getDisplay() { 71b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira return mDisplay; 72b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira } 73b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 74b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira /** 75b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * Get the text value this chip represents. 76b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira */ 77b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira public CharSequence getValue() { 78b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira return mValue; 79b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira } 80b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 81b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira /** 82b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * Get the id of the contact associated with this chip. 83b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira */ 84b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira public long getContactId() { 85b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira return mContactId; 86b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira } 87b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 88b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira /** 89b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * Get the id of the data associated with this chip. 90b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira */ 91b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira public long getDataId() { 92b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira return mDataId; 93b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira } 94b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira 95b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira /** 96b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira * Get associated RecipientEntry. 97b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira */ 98b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira public RecipientEntry getEntry() { 99b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira return mEntry; 100b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira } 1016f9f2858818228eaa1f2a2c562f4d2da6a4216b3Mindy Pereira 1026f9f2858818228eaa1f2a2c562f4d2da6a4216b3Mindy Pereira public void setOriginalText(String text) { 103b3e42aaf97e476719cede047394718fd001fd79bMindy Pereira if (!TextUtils.isEmpty(text)) { 104b3e42aaf97e476719cede047394718fd001fd79bMindy Pereira text = text.trim(); 105b3e42aaf97e476719cede047394718fd001fd79bMindy Pereira } 1066f9f2858818228eaa1f2a2c562f4d2da6a4216b3Mindy Pereira mOriginalText = text; 1076f9f2858818228eaa1f2a2c562f4d2da6a4216b3Mindy Pereira } 1086f9f2858818228eaa1f2a2c562f4d2da6a4216b3Mindy Pereira 1096f9f2858818228eaa1f2a2c562f4d2da6a4216b3Mindy Pereira public CharSequence getOriginalText() { 1106f9f2858818228eaa1f2a2c562f4d2da6a4216b3Mindy Pereira return !TextUtils.isEmpty(mOriginalText) ? mOriginalText : mEntry.getDestination(); 1116f9f2858818228eaa1f2a2c562f4d2da6a4216b3Mindy Pereira } 112b3f8574ad18184f5a9392fc7773863f59f9f5192Mindy Pereira} 113