diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2015-01-31 10:31:22 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2015-01-31 10:31:22 -0800 |
commit | 4c9804c6a0438604fd34e9fbb9bb3c7e03b7d85b (patch) | |
tree | 9f89899b47b89e78cbf18aec769b12b9441d2100 | |
parent | 272399d8d5975371e32580641a12183d22b60665 (diff) | |
parent | 5c67b0375d008b4ec52ebb6e6bb5f83906fdeaaa (diff) | |
download | android_packages_apps_ContactsCommon-4c9804c6a0438604fd34e9fbb9bb3c7e03b7d85b.tar.gz android_packages_apps_ContactsCommon-4c9804c6a0438604fd34e9fbb9bb3c7e03b7d85b.tar.bz2 android_packages_apps_ContactsCommon-4c9804c6a0438604fd34e9fbb9bb3c7e03b7d85b.zip |
Merge "ContactCommon:add RCS support function"
-rw-r--r-- | Android.mk | 1 | ||||
-rw-r--r-- | AndroidManifest.xml | 4 | ||||
-rw-r--r--[-rwxr-xr-x] | src/com/android/contacts/common/list/ContactListItemView.java | 38 | ||||
-rw-r--r--[-rwxr-xr-x] | src/com/android/contacts/common/list/DefaultContactListAdapter.java | 22 | ||||
-rw-r--r-- | src/com/android/contacts/common/model/account/BaseAccountType.java | 28 | ||||
-rw-r--r-- | src/com/android/contacts/common/model/account/FallbackAccountType.java | 5 | ||||
-rw-r--r-- | src/com/android/contacts/common/model/account/GoogleAccountType.java | 2 | ||||
-rw-r--r-- | src/com/android/contacts/common/model/account/PhoneAccountType.java | 4 |
8 files changed, 101 insertions, 3 deletions
@@ -29,6 +29,7 @@ LOCAL_AAPT_FLAGS := \ --extra-packages com.android.phone.common LOCAL_JAVA_LIBRARIES := telephony-common +LOCAL_JAVA_LIBRARIES += rcs_service_api LOCAL_STATIC_JAVA_LIBRARIES := \ com.android.vcard \ diff --git a/AndroidManifest.xml b/AndroidManifest.xml index e9818913..2a789a76 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -21,5 +21,7 @@ <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> - <application/> + <application> + <uses-library android:name="com.suntek.mway.rcs.client.api" android:required="false" /> + </application> </manifest> diff --git a/src/com/android/contacts/common/list/ContactListItemView.java b/src/com/android/contacts/common/list/ContactListItemView.java index 91f063ff..bcde2e6e 100755..100644 --- a/src/com/android/contacts/common/list/ContactListItemView.java +++ b/src/com/android/contacts/common/list/ContactListItemView.java @@ -52,6 +52,7 @@ import com.android.contacts.common.R; import com.android.contacts.common.format.TextHighlighter; import com.android.contacts.common.util.SearchUtil; import com.android.contacts.common.util.ViewUtil; +import com.android.contacts.common.util.ContactsCommonRcsUtil; import com.android.contacts.common.widget.CheckableImageView; import com.android.contacts.common.widget.CheckableQuickContactBadge; @@ -164,6 +165,7 @@ public class ContactListItemView extends ViewGroup private TextView mSnippetView; private TextView mStatusView; private ImageView mPresenceIcon; + private ImageView mRCSCapabilityIcon; private String mQuickCallKey; private ColorStateList mSecondaryTextColor; @@ -215,6 +217,7 @@ public class ContactListItemView extends ViewGroup private int mLabelViewHeight; private int mDataViewHeight; private int mSnippetTextViewHeight; + private int mRCSCapabilityViewHeight; private int mStatusTextViewHeight; // Holds Math.max(mLabelTextViewHeight, mDataViewHeight), assuming Label and Data share the @@ -461,6 +464,14 @@ public class ContactListItemView extends ViewGroup mStatusTextViewHeight = mPresenceIcon.getMeasuredHeight(); } + if (isVisible(mRCSCapabilityIcon)) { + int rcsIconSize = ContactsCommonRcsUtil.dip2px(getContext(), 16); + mRCSCapabilityIcon.measure(MeasureSpec.makeMeasureSpec(rcsIconSize, + MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec( + rcsIconSize, MeasureSpec.EXACTLY)); + mRCSCapabilityViewHeight = mRCSCapabilityIcon.getMeasuredHeight(); + } + if (isVisible(mStatusView)) { // Presence and status are in a same row, so status will be affected by icon size. final int statusWidth; @@ -707,6 +718,14 @@ public class ContactListItemView extends ViewGroup rightBound, textTopBound + mSnippetTextViewHeight); } + + if (isVisible(mRCSCapabilityIcon)) { + int iconWidth = mRCSCapabilityIcon.getMeasuredWidth(); + int rcsTop = (bottom - top - mRCSCapabilityViewHeight) / 2; + int rcsBottom = rcsTop + mRCSCapabilityViewHeight; + mRCSCapabilityIcon.layout(rightBound - iconWidth, rcsTop, + rightBound, rcsBottom); + } } @Override @@ -1240,6 +1259,25 @@ public class ContactListItemView extends ViewGroup } } + /** + * Adds the RCS icon. + */ + public void setRCSCapability(Drawable icon, boolean isRcsUser) { + if (icon != null && isRcsUser) { + if (mRCSCapabilityIcon == null) { + mRCSCapabilityIcon = new ImageView(getContext()); + addView(mRCSCapabilityIcon); + mRCSCapabilityIcon.setImageDrawable(icon); + mRCSCapabilityIcon.setScaleType(ScaleType.CENTER); + } + mRCSCapabilityIcon.setVisibility(View.VISIBLE); + } else { + if (mRCSCapabilityIcon != null) { + mRCSCapabilityIcon.setVisibility(View.GONE); + } + } + } + private TruncateAt getTextEllipsis() { return TruncateAt.MARQUEE; } diff --git a/src/com/android/contacts/common/list/DefaultContactListAdapter.java b/src/com/android/contacts/common/list/DefaultContactListAdapter.java index c44e1e28..452e0bb7 100755..100644 --- a/src/com/android/contacts/common/list/DefaultContactListAdapter.java +++ b/src/com/android/contacts/common/list/DefaultContactListAdapter.java @@ -31,10 +31,13 @@ import android.provider.ContactsContract.SearchSnippets; import android.text.TextUtils; import android.view.View; +import com.android.contacts.common.R; +import com.android.contacts.common.list.ContactListAdapter.ContactQuery; import com.android.contacts.common.model.account.SimAccountType; import com.android.contacts.common.preference.ContactsPreferences; import com.android.contacts.common.MoreContactUtils; import com.android.contacts.common.SimContactsConstants; +import com.android.contacts.common.util.ContactsCommonRcsUtil; import java.util.ArrayList; import java.util.List; @@ -267,6 +270,25 @@ public class DefaultContactListAdapter extends ContactListAdapter { } else { view.setSnippet(null); } + + if (ContactsCommonRcsUtil.getIsRcs()) { + Long contactId = cursor.getLong(ContactQuery.CONTACT_ID); + boolean isUserProfile = cursor + .getInt(ContactQuery.CONTACT_IS_USER_PROFILE) == 1; + if (ContactsCommonRcsUtil.RcsCapabilityMapCache.containsKey(contactId)) { + ContactsCommonRcsUtil.RcsCapabilityMap.put(contactId, + ContactsCommonRcsUtil.RcsCapabilityMapCache + .get(contactId)); + } + if (!isUserProfile + && ContactsCommonRcsUtil.RcsCapabilityMap + .containsKey(contactId)) { + view.setRCSCapability(mContext.getDrawable(R.drawable.rcs_capacity_icon), + ContactsCommonRcsUtil.RcsCapabilityMap.get(contactId)); + } else { + view.setRCSCapability(null, false); + } + } } private boolean isCustomFilterForPhoneNumbersOnly() { diff --git a/src/com/android/contacts/common/model/account/BaseAccountType.java b/src/com/android/contacts/common/model/account/BaseAccountType.java index 8b4c955c..c8d6a57e 100644 --- a/src/com/android/contacts/common/model/account/BaseAccountType.java +++ b/src/com/android/contacts/common/model/account/BaseAccountType.java @@ -39,6 +39,8 @@ import android.util.Log; import android.view.inputmethod.EditorInfo; import com.android.contacts.common.R; +import com.android.contacts.common.model.account.AccountType.DefinitionException; +import com.android.contacts.common.model.account.AccountType.EditField; import com.android.contacts.common.model.dataitem.DataKind; import com.android.contacts.common.testing.NeededForTesting; import com.android.contacts.common.util.CommonDateUtils; @@ -447,6 +449,32 @@ public abstract class BaseAccountType extends AccountType { return kind; } + protected DataKind addDataKindEvent(Context context) throws DefinitionException { + DataKind kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE, + R.string.eventLabelsGroup, 150, true)); + + kind.actionHeader = new SimpleInflater(R.string.eventLabelsGroup); + kind.actionBody = new SimpleInflater(Event.START_DATE); + + kind.typeColumn = Event.TYPE; + kind.typeList = Lists.newArrayList(); + kind.dateFormatWithoutYear = CommonDateUtils.NO_YEAR_DATE_FORMAT; + kind.dateFormatWithYear = CommonDateUtils.FULL_DATE_FORMAT; + kind.typeList.add(buildEventType(Event.TYPE_BIRTHDAY, true).setSpecificMax(1)); + kind.typeList.add(buildEventType(Event.TYPE_ANNIVERSARY, false)); + kind.typeList.add(buildEventType(Event.TYPE_OTHER, false)); + kind.typeList.add(buildEventType(Event.TYPE_CUSTOM, false).setSecondary(true) + .setCustomColumn(Event.LABEL)); + + kind.defaultValues = new ContentValues(); + kind.defaultValues.put(Event.TYPE, Event.TYPE_BIRTHDAY); + + kind.fieldList = Lists.newArrayList(); + kind.fieldList.add(new EditField(Event.DATA, R.string.eventLabelsGroup, FLAGS_EVENT)); + + return kind; + } + /** * Simple inflater that assumes a string resource has a "%s" that will be * filled from the given column. diff --git a/src/com/android/contacts/common/model/account/FallbackAccountType.java b/src/com/android/contacts/common/model/account/FallbackAccountType.java index fd81e463..6a6f09ff 100644 --- a/src/com/android/contacts/common/model/account/FallbackAccountType.java +++ b/src/com/android/contacts/common/model/account/FallbackAccountType.java @@ -22,6 +22,7 @@ import android.util.Log; import com.android.contacts.common.R; import com.android.contacts.common.model.dataitem.DataKind; import com.android.contacts.common.testing.NeededForTesting; +import com.android.contacts.common.util.ContactsCommonRcsUtil; public class FallbackAccountType extends BaseAccountType { private static final String TAG = "FallbackAccountType"; @@ -50,7 +51,9 @@ public class FallbackAccountType extends BaseAccountType { addDataKindNote(context); addDataKindWebsite(context); addDataKindSipAddress(context); - + if (ContactsCommonRcsUtil.getIsRcs()) { + addDataKindEvent(context); + } mIsInitialized = true; } catch (DefinitionException e) { Log.e(TAG, "Problem building account type", e); diff --git a/src/com/android/contacts/common/model/account/GoogleAccountType.java b/src/com/android/contacts/common/model/account/GoogleAccountType.java index 8705ae34..261d56d1 100644 --- a/src/com/android/contacts/common/model/account/GoogleAccountType.java +++ b/src/com/android/contacts/common/model/account/GoogleAccountType.java @@ -155,7 +155,7 @@ public class GoogleAccountType extends BaseAccountType { return kind; } - private DataKind addDataKindEvent(Context context) throws DefinitionException { + protected DataKind addDataKindEvent(Context context) throws DefinitionException { DataKind kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE, R.string.eventLabelsGroup, 150, true)); kind.actionHeader = new EventActionInflater(); diff --git a/src/com/android/contacts/common/model/account/PhoneAccountType.java b/src/com/android/contacts/common/model/account/PhoneAccountType.java index 7e2e1e52..b9ecce78 100644 --- a/src/com/android/contacts/common/model/account/PhoneAccountType.java +++ b/src/com/android/contacts/common/model/account/PhoneAccountType.java @@ -43,6 +43,7 @@ import android.view.inputmethod.EditorInfo; import com.android.contacts.common.R; import com.android.contacts.common.SimContactsConstants; import com.android.contacts.common.model.account.AccountType.DefinitionException; +import com.android.contacts.common.util.ContactsCommonRcsUtil; import com.google.android.collect.Lists; @@ -74,6 +75,9 @@ public class PhoneAccountType extends BaseAccountType{ addDataKindNote(context); addDataKindWebsite(context); addDataKindGroupMembership(context); + if (ContactsCommonRcsUtil.getIsRcs()) { + addDataKindEvent(context); + } if (context.getResources().getBoolean( com.android.internal.R.bool.config_built_in_sip_phone)) { addDataKindSipAddress(context); |