Merge "Move social snippet and date to updates fragment"
diff --git a/res/layout/call_log_contact_photo.xml b/res/layout/call_log_contact_photo.xml
index b8262ad..c47c23c 100644
--- a/res/layout/call_log_contact_photo.xml
+++ b/res/layout/call_log_contact_photo.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
- <ImageView
+ <QuickContactBadge
android:id="@+id/contact_photo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/src/com/android/contacts/calllog/CallLogFragment.java b/src/com/android/contacts/calllog/CallLogFragment.java
index a9aa4b6..bfac0f3 100644
--- a/src/com/android/contacts/calllog/CallLogFragment.java
+++ b/src/com/android/contacts/calllog/CallLogFragment.java
@@ -66,6 +66,7 @@
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
+import android.widget.QuickContactBadge;
import android.widget.TextView;
import java.lang.ref.WeakReference;
@@ -116,7 +117,8 @@
PhoneLookup.LABEL,
PhoneLookup.NUMBER,
PhoneLookup.NORMALIZED_NUMBER,
- PhoneLookup.PHOTO_ID};
+ PhoneLookup.PHOTO_ID,
+ PhoneLookup.LOOKUP_KEY};
public static final int PERSON_ID = 0;
public static final int NAME = 1;
@@ -125,6 +127,7 @@
public static final int MATCHED_NUMBER = 4;
public static final int NORMALIZED_NUMBER = 5;
public static final int PHOTO_ID = 6;
+ public static final int LOOKUP_KEY = 7;
}
private static final class MenuItems {
@@ -155,6 +158,7 @@
public String formattedNumber;
public String normalizedNumber;
public long photoId;
+ public String lookupKey;
public static ContactInfo EMPTY = new ContactInfo();
}
@@ -166,6 +170,7 @@
public int numberType;
public String numberLabel;
public long photoId;
+ public String lookupKey;
}
/** Adapter class to fill in data for the Call Log */
@@ -308,7 +313,8 @@
if (TextUtils.equals(ciq.name, ci.name)
&& TextUtils.equals(ciq.numberLabel, ci.label)
&& ciq.numberType == ci.type
- && ciq.photoId == ci.photoId) {
+ && ciq.photoId == ci.photoId
+ && ciq.lookupKey == ci.lookupKey) {
return;
}
ContentValues values = new ContentValues(3);
@@ -329,7 +335,7 @@
}
private void enqueueRequest(String number, int position,
- String name, int numberType, String numberLabel, long photoId) {
+ String name, int numberType, String numberLabel, long photoId, String lookupKey) {
CallerInfoQuery ciq = new CallerInfoQuery();
ciq.number = number;
ciq.position = position;
@@ -337,6 +343,7 @@
ciq.numberType = numberType;
ciq.numberLabel = numberLabel;
ciq.photoId = photoId;
+ ciq.lookupKey = lookupKey;
synchronized (mRequests) {
mRequests.add(ciq);
mRequests.notifyAll();
@@ -414,6 +421,8 @@
info.normalizedNumber = null; // meaningless for SIP addresses
info.photoId = dataTableCursor.getLong(
dataTableCursor.getColumnIndex(Data.PHOTO_ID));
+ info.lookupKey = dataTableCursor.getString(
+ dataTableCursor.getColumnIndex(Data.LOOKUP_KEY));
infoUpdated = true;
}
@@ -439,6 +448,7 @@
info.normalizedNumber = phonesCursor
.getString(PhoneQuery.NORMALIZED_NUMBER);
info.photoId = phonesCursor.getLong(PhoneQuery.PHOTO_ID);
+ info.lookupKey = phonesCursor.getString(PhoneQuery.LOOKUP_KEY);
infoUpdated = true;
}
@@ -625,7 +635,7 @@
}
views.groupIndicator = (ImageView) view.findViewById(R.id.groupIndicator);
views.groupSize = (TextView) view.findViewById(R.id.groupSize);
- views.photoView = (ImageView) view.findViewById(R.id.contact_photo);
+ views.photoView = (QuickContactBadge) view.findViewById(R.id.contact_photo);
view.setTag(views);
}
@@ -654,7 +664,7 @@
mContactInfoCache.put(number, info);
Log.d(TAG, "Contact info missing: " + number);
enqueueRequest(number, c.getPosition(),
- callerName, callerNumberType, callerNumberLabel, 0L);
+ callerName, callerNumberType, callerNumberLabel, 0L, "");
} else if (info != ContactInfo.EMPTY) { // Has been queried
// Check if any data is different from the data cached in the
// calls db. If so, queue the request so that we can update
@@ -665,7 +675,8 @@
// Something is amiss, so sync up.
Log.w(TAG, "Contact info inconsistent: " + number);
enqueueRequest(number, c.getPosition(),
- callerName, callerNumberType, callerNumberLabel, info.photoId);
+ callerName, callerNumberType, callerNumberLabel, info.photoId,
+ info.lookupKey);
} else if (cachedInfo.isExpired()) {
Log.d(TAG, "Contact info expired: " + number);
// Put it back in the cache, therefore marking it as not expired, so that other
@@ -673,7 +684,7 @@
mContactInfoCache.put(number, info);
// The contact info is no longer up to date, we should request it.
enqueueRequest(number, c.getPosition(), info.name, info.type, info.label,
- info.photoId);
+ info.photoId, info.lookupKey);
}
// Format and cache phone number for found contact
@@ -684,10 +695,12 @@
formattedNumber = info.formattedNumber;
}
+ long contactId = info.personId;
String name = info.name;
int ntype = info.type;
String label = info.label;
long photoId = info.photoId;
+ String lookupKey = info.lookupKey;
// If there's no name cached in our hashmap, but there's one in the
// calls db, use the one in the calls db. Otherwise the name in our
// hashmap is more recent, so it has precedence.
@@ -719,7 +732,7 @@
System.currentTimeMillis());
mCallLogViewsHelper.setCallType(views, c.getInt(CallLogQuery.CALL_TYPE));
if (views.photoView != null) {
- mContactPhotoManager.loadPhoto(views.photoView, photoId);
+ bindQuickContact(views.photoView, photoId, contactId, lookupKey);
}
@@ -730,6 +743,16 @@
view.getViewTreeObserver().addOnPreDrawListener(this);
}
}
+
+ private void bindQuickContact(QuickContactBadge view, long photoId, long contactId,
+ String lookupKey) {
+ view.assignContactUri(getContactUri(contactId, lookupKey));
+ mContactPhotoManager.loadPhoto(view, photoId);
+ }
+
+ private Uri getContactUri(long contactId, String lookupKey) {
+ return Contacts.getLookupUri(contactId, lookupKey);
+ }
}
private static final class QueryHandler extends AsyncQueryHandler {
diff --git a/src/com/android/contacts/calllog/CallLogListItemViews.java b/src/com/android/contacts/calllog/CallLogListItemViews.java
index 65b92e2..dde7cf6 100644
--- a/src/com/android/contacts/calllog/CallLogListItemViews.java
+++ b/src/com/android/contacts/calllog/CallLogListItemViews.java
@@ -18,6 +18,7 @@
import android.view.View;
import android.widget.ImageView;
+import android.widget.QuickContactBadge;
import android.widget.TextView;
/**
@@ -47,6 +48,6 @@
* entries.
*/
public TextView groupSize;
- /** The contact photo for the contact. Only present for group and stand alone entries. */
- public ImageView photoView;
-}
\ No newline at end of file
+ /** The quick contact badge for the contact. Only present for group and stand alone entries. */
+ public QuickContactBadge photoView;
+}