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