summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2015-01-31 10:31:22 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2015-01-31 10:31:22 -0800
commit4c9804c6a0438604fd34e9fbb9bb3c7e03b7d85b (patch)
tree9f89899b47b89e78cbf18aec769b12b9441d2100
parent272399d8d5975371e32580641a12183d22b60665 (diff)
parent5c67b0375d008b4ec52ebb6e6bb5f83906fdeaaa (diff)
downloadandroid_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.mk1
-rw-r--r--AndroidManifest.xml4
-rw-r--r--[-rwxr-xr-x]src/com/android/contacts/common/list/ContactListItemView.java38
-rw-r--r--[-rwxr-xr-x]src/com/android/contacts/common/list/DefaultContactListAdapter.java22
-rw-r--r--src/com/android/contacts/common/model/account/BaseAccountType.java28
-rw-r--r--src/com/android/contacts/common/model/account/FallbackAccountType.java5
-rw-r--r--src/com/android/contacts/common/model/account/GoogleAccountType.java2
-rw-r--r--src/com/android/contacts/common/model/account/PhoneAccountType.java4
8 files changed, 101 insertions, 3 deletions
diff --git a/Android.mk b/Android.mk
index 7e395009..278960b6 100644
--- a/Android.mk
+++ b/Android.mk
@@ -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);