Loading res/layout/call_log_contact_photo.xml +13 −2 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android"> <QuickContactBadge <FrameLayout android:id="@+id/contact_photo" android:layout_width="@dimen/call_log_list_contact_photo_size" android:layout_height="@dimen/call_log_list_contact_photo_size" android:layout_alignParentLeft="true" android:layout_centerInParent="true" > <QuickContactBadge android:id="@+id/quick_contact_photo" android:layout_width="@dimen/call_log_list_contact_photo_size" android:layout_height="@dimen/call_log_list_contact_photo_size" /> <ImageView android:id="@+id/plain_contact_photo" android:layout_width="@dimen/call_log_list_contact_photo_size" android:layout_height="@dimen/call_log_list_contact_photo_size" /> </FrameLayout> </merge> src/com/android/contacts/calllog/CallLogFragment.java +17 −13 Original line number Diff line number Diff line Loading @@ -63,7 +63,6 @@ import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.widget.ListView; import android.widget.QuickContactBadge; import android.widget.TextView; import java.util.LinkedList; Loading Loading @@ -176,7 +175,7 @@ public class CallLogFragment extends ListFragment implements ViewPagerVisibility private TextView mStatusMessageAction; public static final class ContactInfo { public long personId; public long personId = -1; public String name; public int type; public String label; Loading Loading @@ -657,6 +656,8 @@ public class CallLogFragment extends ListFragment implements ViewPagerVisibility // Get the views to bind to. CallLogListItemViews views = CallLogListItemViews.fromView(view); views.callView.setOnClickListener(this); // Do nothing when a plain photo is clicked. Without this, the list item will fire. views.plainPhotoView.setOnClickListener(null); view.setTag(views); } Loading Loading @@ -763,10 +764,7 @@ public class CallLogFragment extends ListFragment implements ViewPagerVisibility // New items also use the highlighted version of the text. final boolean isHighlighted = isNew; mCallLogViewsHelper.setPhoneCallDetails(views, details, useIcons, isHighlighted); if (views.photoView != null) { bindQuickContact(views.photoView, thumbnailUri, personId, lookupKey); } setPhoto(views, thumbnailUri, personId, lookupKey); // Listen for the first draw if (mPreDrawListener == null) { Loading Loading @@ -794,14 +792,20 @@ public class CallLogFragment extends ListFragment implements ViewPagerVisibility return callTypes; } private void bindQuickContact(QuickContactBadge view, Uri thumbnailUri, long contactId, private void setPhoto(CallLogListItemViews views, Uri thumbnailUri, long contactId, String lookupKey) { view.assignContactUri(getContactUri(contactId, lookupKey)); mContactPhotoManager.loadPhoto(view, thumbnailUri); if (contactId == -1) { // This does not correspond to a contact, do not use the QuickContactBadge. mContactPhotoManager.loadPhoto(views.plainPhotoView, thumbnailUri); views.plainPhotoView.setVisibility(View.VISIBLE); views.quickContactView.setVisibility(View.GONE); } else { views.quickContactView.assignContactUri( Contacts.getLookupUri(contactId, lookupKey)); mContactPhotoManager.loadPhoto(views.quickContactView, thumbnailUri); views.quickContactView.setVisibility(View.VISIBLE); views.plainPhotoView.setVisibility(View.GONE); } private Uri getContactUri(long contactId, String lookupKey) { return Contacts.getLookupUri(contactId, lookupKey); } /** Loading src/com/android/contacts/calllog/CallLogListItemViews.java +13 −6 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import com.android.contacts.R; import android.content.Context; import android.view.View; import android.widget.ImageView; import android.widget.QuickContactBadge; import android.widget.TextView; Loading @@ -28,8 +29,10 @@ import android.widget.TextView; * Simple value object containing the various views within a call log entry. */ public final class CallLogListItemViews { /** The quick contact badge for the contact. Only present for group and stand alone entries. */ public final QuickContactBadge photoView; /** The quick contact badge for the contact. */ public final QuickContactBadge quickContactView; /** The photo view without quick contact badge. */ public final ImageView plainPhotoView; /** The main action button on the entry. */ public final View callView; /** The play action button used for voicemail. */ Loading @@ -47,11 +50,12 @@ public final class CallLogListItemViews { /** The text of the header in a stand-alone row, or null for other types of rows. */ public final TextView listHeaderTextView; private CallLogListItemViews(QuickContactBadge photoView, View callView, View playView, View unheardView, View dividerView, private CallLogListItemViews(QuickContactBadge quickContactView, ImageView photoView, View callView, View playView, View unheardView, View dividerView, PhoneCallDetailsViews phoneCallDetailsViews, View listItemView, View listHeaderView, TextView listHeaderTextView) { this.photoView = photoView; this.quickContactView = quickContactView; this.plainPhotoView = photoView; this.callView = callView; this.playView = playView; this.unheardView = unheardView; Loading @@ -63,7 +67,9 @@ public final class CallLogListItemViews { } public static CallLogListItemViews fromView(View view) { return new CallLogListItemViews((QuickContactBadge) view.findViewById(R.id.contact_photo), return new CallLogListItemViews( (QuickContactBadge) view.findViewById(R.id.quick_contact_photo), (ImageView) view.findViewById(R.id.plain_contact_photo), view.findViewById(R.id.call_icon), view.findViewById(R.id.play_icon), view.findViewById(R.id.unheard_icon), Loading @@ -77,6 +83,7 @@ public final class CallLogListItemViews { public static CallLogListItemViews createForTest(Context context) { return new CallLogListItemViews( new QuickContactBadge(context), new ImageView(context), new View(context), new View(context), new View(context), Loading tests/src/com/android/contacts/activities/CallLogActivityTests.java +25 −0 Original line number Diff line number Diff line Loading @@ -266,6 +266,31 @@ public class CallLogActivityTests assertNumberAndLabelAre(views, TEST_FORMATTED_NUMBER, numberLabel); } @MediumTest public void testBindView_WithQuickContactBadge() { mCursor.moveToFirst(); insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE, "John Doe", Phone.TYPE_HOME, ""); View view = mAdapter.newStandAloneView(getActivity(), mParentView); mAdapter.bindStandAloneView(view, getActivity(), mCursor); CallLogListItemViews views = (CallLogListItemViews) view.getTag(); assertEquals(View.VISIBLE, views.quickContactView.getVisibility()); assertEquals(View.GONE, views.plainPhotoView.getVisibility()); } @MediumTest public void testBindView_WithoutQuickContactBadge() { mCursor.moveToFirst(); insert(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE); View view = mAdapter.newStandAloneView(getActivity(), mParentView); mAdapter.bindStandAloneView(view, getActivity(), mCursor); CallLogListItemViews views = (CallLogListItemViews) view.getTag(); assertEquals(View.GONE, views.quickContactView.getVisibility()); assertEquals(View.VISIBLE, views.plainPhotoView.getVisibility()); } /** Returns the label associated with a given phone type. */ private CharSequence getTypeLabel(int phoneType) { return Phone.getTypeLabel(getActivity().getResources(), phoneType, ""); Loading Loading
res/layout/call_log_contact_photo.xml +13 −2 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android"> <QuickContactBadge <FrameLayout android:id="@+id/contact_photo" android:layout_width="@dimen/call_log_list_contact_photo_size" android:layout_height="@dimen/call_log_list_contact_photo_size" android:layout_alignParentLeft="true" android:layout_centerInParent="true" > <QuickContactBadge android:id="@+id/quick_contact_photo" android:layout_width="@dimen/call_log_list_contact_photo_size" android:layout_height="@dimen/call_log_list_contact_photo_size" /> <ImageView android:id="@+id/plain_contact_photo" android:layout_width="@dimen/call_log_list_contact_photo_size" android:layout_height="@dimen/call_log_list_contact_photo_size" /> </FrameLayout> </merge>
src/com/android/contacts/calllog/CallLogFragment.java +17 −13 Original line number Diff line number Diff line Loading @@ -63,7 +63,6 @@ import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.widget.ListView; import android.widget.QuickContactBadge; import android.widget.TextView; import java.util.LinkedList; Loading Loading @@ -176,7 +175,7 @@ public class CallLogFragment extends ListFragment implements ViewPagerVisibility private TextView mStatusMessageAction; public static final class ContactInfo { public long personId; public long personId = -1; public String name; public int type; public String label; Loading Loading @@ -657,6 +656,8 @@ public class CallLogFragment extends ListFragment implements ViewPagerVisibility // Get the views to bind to. CallLogListItemViews views = CallLogListItemViews.fromView(view); views.callView.setOnClickListener(this); // Do nothing when a plain photo is clicked. Without this, the list item will fire. views.plainPhotoView.setOnClickListener(null); view.setTag(views); } Loading Loading @@ -763,10 +764,7 @@ public class CallLogFragment extends ListFragment implements ViewPagerVisibility // New items also use the highlighted version of the text. final boolean isHighlighted = isNew; mCallLogViewsHelper.setPhoneCallDetails(views, details, useIcons, isHighlighted); if (views.photoView != null) { bindQuickContact(views.photoView, thumbnailUri, personId, lookupKey); } setPhoto(views, thumbnailUri, personId, lookupKey); // Listen for the first draw if (mPreDrawListener == null) { Loading Loading @@ -794,14 +792,20 @@ public class CallLogFragment extends ListFragment implements ViewPagerVisibility return callTypes; } private void bindQuickContact(QuickContactBadge view, Uri thumbnailUri, long contactId, private void setPhoto(CallLogListItemViews views, Uri thumbnailUri, long contactId, String lookupKey) { view.assignContactUri(getContactUri(contactId, lookupKey)); mContactPhotoManager.loadPhoto(view, thumbnailUri); if (contactId == -1) { // This does not correspond to a contact, do not use the QuickContactBadge. mContactPhotoManager.loadPhoto(views.plainPhotoView, thumbnailUri); views.plainPhotoView.setVisibility(View.VISIBLE); views.quickContactView.setVisibility(View.GONE); } else { views.quickContactView.assignContactUri( Contacts.getLookupUri(contactId, lookupKey)); mContactPhotoManager.loadPhoto(views.quickContactView, thumbnailUri); views.quickContactView.setVisibility(View.VISIBLE); views.plainPhotoView.setVisibility(View.GONE); } private Uri getContactUri(long contactId, String lookupKey) { return Contacts.getLookupUri(contactId, lookupKey); } /** Loading
src/com/android/contacts/calllog/CallLogListItemViews.java +13 −6 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import com.android.contacts.R; import android.content.Context; import android.view.View; import android.widget.ImageView; import android.widget.QuickContactBadge; import android.widget.TextView; Loading @@ -28,8 +29,10 @@ import android.widget.TextView; * Simple value object containing the various views within a call log entry. */ public final class CallLogListItemViews { /** The quick contact badge for the contact. Only present for group and stand alone entries. */ public final QuickContactBadge photoView; /** The quick contact badge for the contact. */ public final QuickContactBadge quickContactView; /** The photo view without quick contact badge. */ public final ImageView plainPhotoView; /** The main action button on the entry. */ public final View callView; /** The play action button used for voicemail. */ Loading @@ -47,11 +50,12 @@ public final class CallLogListItemViews { /** The text of the header in a stand-alone row, or null for other types of rows. */ public final TextView listHeaderTextView; private CallLogListItemViews(QuickContactBadge photoView, View callView, View playView, View unheardView, View dividerView, private CallLogListItemViews(QuickContactBadge quickContactView, ImageView photoView, View callView, View playView, View unheardView, View dividerView, PhoneCallDetailsViews phoneCallDetailsViews, View listItemView, View listHeaderView, TextView listHeaderTextView) { this.photoView = photoView; this.quickContactView = quickContactView; this.plainPhotoView = photoView; this.callView = callView; this.playView = playView; this.unheardView = unheardView; Loading @@ -63,7 +67,9 @@ public final class CallLogListItemViews { } public static CallLogListItemViews fromView(View view) { return new CallLogListItemViews((QuickContactBadge) view.findViewById(R.id.contact_photo), return new CallLogListItemViews( (QuickContactBadge) view.findViewById(R.id.quick_contact_photo), (ImageView) view.findViewById(R.id.plain_contact_photo), view.findViewById(R.id.call_icon), view.findViewById(R.id.play_icon), view.findViewById(R.id.unheard_icon), Loading @@ -77,6 +83,7 @@ public final class CallLogListItemViews { public static CallLogListItemViews createForTest(Context context) { return new CallLogListItemViews( new QuickContactBadge(context), new ImageView(context), new View(context), new View(context), new View(context), Loading
tests/src/com/android/contacts/activities/CallLogActivityTests.java +25 −0 Original line number Diff line number Diff line Loading @@ -266,6 +266,31 @@ public class CallLogActivityTests assertNumberAndLabelAre(views, TEST_FORMATTED_NUMBER, numberLabel); } @MediumTest public void testBindView_WithQuickContactBadge() { mCursor.moveToFirst(); insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE, "John Doe", Phone.TYPE_HOME, ""); View view = mAdapter.newStandAloneView(getActivity(), mParentView); mAdapter.bindStandAloneView(view, getActivity(), mCursor); CallLogListItemViews views = (CallLogListItemViews) view.getTag(); assertEquals(View.VISIBLE, views.quickContactView.getVisibility()); assertEquals(View.GONE, views.plainPhotoView.getVisibility()); } @MediumTest public void testBindView_WithoutQuickContactBadge() { mCursor.moveToFirst(); insert(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE); View view = mAdapter.newStandAloneView(getActivity(), mParentView); mAdapter.bindStandAloneView(view, getActivity(), mCursor); CallLogListItemViews views = (CallLogListItemViews) view.getTag(); assertEquals(View.GONE, views.quickContactView.getVisibility()); assertEquals(View.VISIBLE, views.plainPhotoView.getVisibility()); } /** Returns the label associated with a given phone type. */ private CharSequence getTypeLabel(int phoneType) { return Phone.getTypeLabel(getActivity().getResources(), phoneType, ""); Loading