Fixed presence icons for ContactTiles and ContactListItem.
-Does not draw offline icons
-Only draws circle icons
Bug: 5154620
Bug: 5137647
Change-Id: Ife500d4f7e580fcb4374eba560e153033db87a44
diff --git a/src/com/android/contacts/ContactTileLoaderFactory.java b/src/com/android/contacts/ContactTileLoaderFactory.java
index 30bd7e4..28f2164 100644
--- a/src/com/android/contacts/ContactTileLoaderFactory.java
+++ b/src/com/android/contacts/ContactTileLoaderFactory.java
@@ -23,7 +23,6 @@
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Contacts.Data;
/**
* Used to create {@link CursorLoader}s to load different groups of {@link ContactTileView}s
diff --git a/src/com/android/contacts/list/ContactListAdapter.java b/src/com/android/contacts/list/ContactListAdapter.java
index 51cc965..2e511bc 100644
--- a/src/com/android/contacts/list/ContactListAdapter.java
+++ b/src/com/android/contacts/list/ContactListAdapter.java
@@ -45,14 +45,13 @@
Contacts.SORT_KEY_PRIMARY, // 3
Contacts.STARRED, // 4
Contacts.CONTACT_PRESENCE, // 5
- Contacts.CONTACT_CHAT_CAPABILITY, // 6
- Contacts.CONTACT_STATUS, // 7
- Contacts.PHOTO_ID, // 8
- Contacts.PHOTO_THUMBNAIL_URI, // 9
- Contacts.LOOKUP_KEY, // 10
- Contacts.PHONETIC_NAME, // 11
- Contacts.HAS_PHONE_NUMBER, // 12
- Contacts.IS_USER_PROFILE, // 13
+ Contacts.CONTACT_STATUS, // 6
+ Contacts.PHOTO_ID, // 7
+ Contacts.PHOTO_THUMBNAIL_URI, // 8
+ Contacts.LOOKUP_KEY, // 9
+ Contacts.PHONETIC_NAME, // 10
+ Contacts.HAS_PHONE_NUMBER, // 11
+ Contacts.IS_USER_PROFILE, // 12
};
protected static final String[] PROJECTION_DATA = new String[] {
@@ -62,13 +61,12 @@
Data.SORT_KEY_PRIMARY, // 3
Data.STARRED, // 4
Data.CONTACT_PRESENCE, // 5
- Data.CONTACT_CHAT_CAPABILITY, // 6
- Data.CONTACT_STATUS, // 7
- Data.PHOTO_ID, // 8
- Data.PHOTO_THUMBNAIL_URI, // 9
- Data.LOOKUP_KEY, // 10
- Data.PHONETIC_NAME, // 11
- Data.HAS_PHONE_NUMBER, // 12
+ Data.CONTACT_STATUS, // 6
+ Data.PHOTO_ID, // 7
+ Data.PHOTO_THUMBNAIL_URI, // 8
+ Data.LOOKUP_KEY, // 9
+ Data.PHONETIC_NAME, // 10
+ Data.HAS_PHONE_NUMBER, // 11
};
protected static final String[] FILTER_PROJECTION = new String[] {
@@ -78,15 +76,14 @@
Contacts.SORT_KEY_PRIMARY, // 3
Contacts.STARRED, // 4
Contacts.CONTACT_PRESENCE, // 5
- Contacts.CONTACT_CHAT_CAPABILITY, // 6
- Contacts.CONTACT_STATUS, // 7
- Contacts.PHOTO_ID, // 8
- Contacts.PHOTO_THUMBNAIL_URI, // 9
- Contacts.LOOKUP_KEY, // 10
- Contacts.PHONETIC_NAME, // 11
- Contacts.HAS_PHONE_NUMBER, // 12
- Contacts.IS_USER_PROFILE, // 13
- SearchSnippetColumns.SNIPPET, // 14
+ Contacts.CONTACT_STATUS, // 6
+ Contacts.PHOTO_ID, // 7
+ Contacts.PHOTO_THUMBNAIL_URI, // 8
+ Contacts.LOOKUP_KEY, // 9
+ Contacts.PHONETIC_NAME, // 10
+ Contacts.HAS_PHONE_NUMBER, // 11
+ Contacts.IS_USER_PROFILE, // 12
+ SearchSnippetColumns.SNIPPET, // 13
};
protected static final int CONTACT_ID_COLUMN_INDEX = 0;
@@ -95,15 +92,14 @@
protected static final int CONTACT_SORT_KEY_PRIMARY_COLUMN_INDEX = 3;
protected static final int CONTACT_STARRED_COLUMN_INDEX = 4;
protected static final int CONTACT_PRESENCE_STATUS_COLUMN_INDEX = 5;
- protected static final int CONTACT_CHAT_CAPABILITY_COLUMN_INDEX = 6;
- protected static final int CONTACT_CONTACT_STATUS_COLUMN_INDEX = 7;
- protected static final int CONTACT_PHOTO_ID_COLUMN_INDEX = 8;
- protected static final int CONTACT_PHOTO_URI_COLUMN_INDEX = 9;
- protected static final int CONTACT_LOOKUP_KEY_COLUMN_INDEX = 10;
- protected static final int CONTACT_PHONETIC_NAME_COLUMN_INDEX = 11;
- protected static final int CONTACT_HAS_PHONE_COLUMN_INDEX = 12;
- protected static final int CONTACT_IS_USER_PROFILE = 13;
- protected static final int CONTACT_SNIPPET_COLUMN_INDEX = 14;
+ protected static final int CONTACT_CONTACT_STATUS_COLUMN_INDEX = 6;
+ protected static final int CONTACT_PHOTO_ID_COLUMN_INDEX = 7;
+ protected static final int CONTACT_PHOTO_URI_COLUMN_INDEX = 8;
+ protected static final int CONTACT_LOOKUP_KEY_COLUMN_INDEX = 9;
+ protected static final int CONTACT_PHONETIC_NAME_COLUMN_INDEX = 10;
+ protected static final int CONTACT_HAS_PHONE_COLUMN_INDEX = 11;
+ protected static final int CONTACT_IS_USER_PROFILE = 12;
+ protected static final int CONTACT_SNIPPET_COLUMN_INDEX = 13;
private CharSequence mUnknownNameText;
private int mDisplayNameColumnIndex;
@@ -281,7 +277,7 @@
protected void bindPresenceAndStatusMessage(final ContactListItemView view, Cursor cursor) {
view.showPresenceAndStatusMessage(cursor, CONTACT_PRESENCE_STATUS_COLUMN_INDEX,
- CONTACT_CHAT_CAPABILITY_COLUMN_INDEX, CONTACT_CONTACT_STATUS_COLUMN_INDEX);
+ CONTACT_CONTACT_STATUS_COLUMN_INDEX);
}
protected void bindSearchSnippet(final ContactListItemView view, Cursor cursor) {
diff --git a/src/com/android/contacts/list/ContactListItemView.java b/src/com/android/contacts/list/ContactListItemView.java
index 4c4b780..ce1b119 100644
--- a/src/com/android/contacts/list/ContactListItemView.java
+++ b/src/com/android/contacts/list/ContactListItemView.java
@@ -1050,17 +1050,12 @@
* Sets the proper icon (star or presence or nothing) and/or status message.
*/
public void showPresenceAndStatusMessage(Cursor cursor, int presenceColumnIndex,
- int capabilityColumnIndex, int contactStatusColumnIndex) {
+ int contactStatusColumnIndex) {
Drawable icon = null;
int presence = 0;
- int chatCapability = 0;
if (!cursor.isNull(presenceColumnIndex)) {
presence = cursor.getInt(presenceColumnIndex);
- if (capabilityColumnIndex != 0 && !cursor.isNull(presenceColumnIndex)) {
- chatCapability = cursor.getInt(capabilityColumnIndex);
- }
- icon = ContactPresenceIconUtil.getChatCapabilityIcon(
- getContext(), presence, chatCapability);
+ icon = ContactPresenceIconUtil.getPresenceIcon(getContext(), presence);
}
setPresence(icon);
diff --git a/src/com/android/contacts/list/ContactTileAdapter.java b/src/com/android/contacts/list/ContactTileAdapter.java
index 37ccded..9ee5fb3 100644
--- a/src/com/android/contacts/list/ContactTileAdapter.java
+++ b/src/com/android/contacts/list/ContactTileAdapter.java
@@ -16,6 +16,8 @@
package com.android.contacts.list;
import com.android.contacts.ContactPhotoManager;
+import com.android.contacts.ContactPresenceIconUtil;
+import com.android.contacts.ContactStatusUtil;
import com.android.contacts.ContactTileLoaderFactory;
import com.android.contacts.GroupMemberLoader;
import com.android.contacts.R;
@@ -25,6 +27,7 @@
import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
+import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
@@ -238,8 +241,8 @@
contact.photoUri = (photoUri != null ? Uri.parse(photoUri) : null);
contact.lookupKey = ContentUris.withAppendedId(
Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey), id);
- contact.presence = cursor.isNull(mPresenceIndex) ? null : cursor.getInt(mPresenceIndex);
+ // Set phone number and label
if (mDisplayType == DisplayType.STREQUENT_PHONE_ONLY) {
int phoneNumberType = cursor.getInt(mPhoneNumberTypeIndex);
String phoneNumberCustomLabel = cursor.getString(mPhoneNumberLabelIndex);
@@ -247,8 +250,25 @@
phoneNumberCustomLabel);
contact.phoneNumber = cursor.getString(mPhoneNumberIndex);
} else {
- contact.status = cursor.getString(mStatusIndex);
- contact.presence = cursor.isNull(mPresenceIndex) ? null : cursor.getInt(mPresenceIndex);
+ // Set presence icon and status message
+ Drawable icon = null;
+ int presence = 0;
+ if (!cursor.isNull(mPresenceIndex)) {
+ presence = cursor.getInt(mPresenceIndex);
+ icon = ContactPresenceIconUtil.getPresenceIcon(mContext, presence);
+ }
+ contact.presenceIcon = icon;
+
+ String statusMessage = null;
+ if (mStatusIndex != 0 && !cursor.isNull(mStatusIndex)) {
+ statusMessage = cursor.getString(mStatusIndex);
+ }
+ // If there is no status message from the contact, but there was a presence value,
+ // then use the default status message string
+ if (statusMessage == null && presence != 0) {
+ statusMessage = ContactStatusUtil.getStatusString(mContext, presence);
+ }
+ contact.status = statusMessage;
}
return contact;
@@ -531,7 +551,7 @@
public String phoneNumber;
public Uri photoUri;
public Uri lookupKey;
- public Integer presence;
+ public Drawable presenceIcon;
}
private static class ViewTypes {
diff --git a/src/com/android/contacts/list/ContactTileView.java b/src/com/android/contacts/list/ContactTileView.java
index 25edd7f..bfc4a2e 100644
--- a/src/com/android/contacts/list/ContactTileView.java
+++ b/src/com/android/contacts/list/ContactTileView.java
@@ -96,22 +96,12 @@
mLookupUri = entry.lookupKey;
if (mStatus != null) {
- String statusText;
- if (entry.presence == null) {
+ if (entry.status == null) {
mStatus.setVisibility(View.GONE);
} else {
- statusText =
- (entry.status != null ? entry.status :
- ContactStatusUtil.getStatusString(mContext, entry.presence));
- mStatus.setText(statusText);
- int presenceDrawableResId = (entry.presence == null ? 0 :
- StatusUpdates.getPresenceIconResourceId(entry.presence));
- if (presenceDrawableResId != 0) {
- Log.i(TAG, "iconId = " + presenceDrawableResId);
- mStatus.setCompoundDrawablesWithIntrinsicBounds(
- getResources().getDrawable(presenceDrawableResId),
- null, null, null);
- }
+ mStatus.setText(entry.status);
+ mStatus.setCompoundDrawablesWithIntrinsicBounds(entry.presenceIcon,
+ null, null, null);
mStatus.setVisibility(View.VISIBLE);
}
}
diff --git a/src/com/android/contacts/list/LegacyContactListAdapter.java b/src/com/android/contacts/list/LegacyContactListAdapter.java
index b3ab2af..b21d484 100644
--- a/src/com/android/contacts/list/LegacyContactListAdapter.java
+++ b/src/com/android/contacts/list/LegacyContactListAdapter.java
@@ -91,6 +91,6 @@
}
protected void bindPresence(final ContactListItemView view, Cursor cursor) {
- view.showPresenceAndStatusMessage(cursor, PERSON_PRESENCE_STATUS_COLUMN_INDEX, 0, 0);
+ view.showPresenceAndStatusMessage(cursor, PERSON_PRESENCE_STATUS_COLUMN_INDEX, 0);
}
}