diff options
author | calderwoodra <calderwoodra@google.com> | 2018-04-10 14:45:16 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-04-10 15:42:13 -0700 |
commit | 2bee0528c1f42b698a606f24da4fa652ceb8d322 (patch) | |
tree | 7b31dcd02a359b27f32a7476c3ed94bd262f6d82 /java/com/android/dialer/speeddial/FavoritesViewHolder.java | |
parent | 2bdb59f0392e54be3dc2c57c32ce126e1e4af7cf (diff) |
Wire up SpeedDial fragment with SpeedDialUiItemLoader.
This change is mostly just a migration from a cursor loader and
cursor to a listenable future and list of POJOs.
Bug: 36841782
Test: tap
PiperOrigin-RevId: 192349724
Change-Id: I37140dcc2e5e03bc5745573c0d777e18c4f1a880
Diffstat (limited to 'java/com/android/dialer/speeddial/FavoritesViewHolder.java')
-rw-r--r-- | java/com/android/dialer/speeddial/FavoritesViewHolder.java | 82 |
1 files changed, 37 insertions, 45 deletions
diff --git a/java/com/android/dialer/speeddial/FavoritesViewHolder.java b/java/com/android/dialer/speeddial/FavoritesViewHolder.java index c25b05ead..92ffb0a46 100644 --- a/java/com/android/dialer/speeddial/FavoritesViewHolder.java +++ b/java/com/android/dialer/speeddial/FavoritesViewHolder.java @@ -17,13 +17,8 @@ package com.android.dialer.speeddial; import android.content.Context; -import android.content.res.Resources; -import android.database.Cursor; -import android.net.Uri; -import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.Contacts; import android.support.v7.widget.RecyclerView; -import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; @@ -31,8 +26,12 @@ import android.widget.FrameLayout; import android.widget.QuickContactBadge; import android.widget.TextView; import com.android.dialer.common.Assert; -import com.android.dialer.contactphoto.ContactPhotoManager; -import com.android.dialer.lettertile.LetterTileDrawable; +import com.android.dialer.glidephotomanager.GlidePhotoManagerComponent; +import com.android.dialer.glidephotomanager.PhotoInfo; +import com.android.dialer.speeddial.database.SpeedDialEntry.Channel; +import com.android.dialer.speeddial.loader.SpeedDialUiItem; +import java.util.ArrayList; +import java.util.List; /** ViewHolder for starred/favorite contacts in {@link SpeedDialFragment}. */ public class FavoritesViewHolder extends RecyclerView.ViewHolder @@ -48,7 +47,7 @@ public class FavoritesViewHolder extends RecyclerView.ViewHolder private boolean hasDefaultNumber; private boolean isVideoCall; private String number; - private String lookupKey; + private List<Channel> channels; public FavoritesViewHolder(View view, FavoriteContactsListener listener) { super(view); @@ -62,44 +61,37 @@ public class FavoritesViewHolder extends RecyclerView.ViewHolder this.listener = listener; } - public void bind(Context context, Cursor cursor) { - Assert.checkArgument(cursor.getInt(StrequentContactsCursorLoader.PHONE_STARRED) == 1); - isVideoCall = false; // TODO(calderwoodra): get from disambig data - number = cursor.getString(StrequentContactsCursorLoader.PHONE_NUMBER); + public void bind(Context context, SpeedDialUiItem speedDialUiItem) { + Assert.checkArgument(speedDialUiItem.isStarred()); - String name = cursor.getString(StrequentContactsCursorLoader.PHONE_DISPLAY_NAME); - long contactId = cursor.getLong(StrequentContactsCursorLoader.PHONE_ID); - lookupKey = cursor.getString(StrequentContactsCursorLoader.PHONE_LOOKUP_KEY); - Uri contactUri = Contacts.getLookupUri(contactId, lookupKey); + nameView.setText(speedDialUiItem.name()); + hasDefaultNumber = speedDialUiItem.defaultChannel() != null; + if (hasDefaultNumber) { + channels = new ArrayList<>(); + isVideoCall = speedDialUiItem.defaultChannel().isVideoTechnology(); + number = speedDialUiItem.defaultChannel().number(); + phoneType.setText(speedDialUiItem.defaultChannel().label()); + videoCallIcon.setVisibility(isVideoCall ? View.VISIBLE : View.GONE); + } else { + channels = speedDialUiItem.channels(); + isVideoCall = false; + number = null; + phoneType.setText(""); + videoCallIcon.setVisibility(View.GONE); + } - String photoUri = cursor.getString(StrequentContactsCursorLoader.PHONE_PHOTO_URI); - ContactPhotoManager.getInstance(context) - .loadDialerThumbnailOrPhoto( + GlidePhotoManagerComponent.get(context) + .glidePhotoManager() + .loadQuickContactBadge( photoView, - contactUri, - cursor.getLong(StrequentContactsCursorLoader.PHONE_PHOTO_ID), - photoUri == null ? null : Uri.parse(photoUri), - name, - LetterTileDrawable.TYPE_DEFAULT); - nameView.setText(name); - phoneType.setText(getLabel(context.getResources(), cursor)); - videoCallIcon.setVisibility(isVideoCall ? View.VISIBLE : View.GONE); - - // TODO(calderwoodra): Update this to include communication avenues also - hasDefaultNumber = cursor.getInt(StrequentContactsCursorLoader.PHONE_IS_SUPER_PRIMARY) != 0; - } - - // TODO(calderwoodra): handle CNAP and cequint types. - // TODO(calderwoodra): unify this into a utility method with CallLogAdapter#getNumberType - private static String getLabel(Resources resources, Cursor cursor) { - int numberType = cursor.getInt(StrequentContactsCursorLoader.PHONE_TYPE); - String numberLabel = cursor.getString(StrequentContactsCursorLoader.PHONE_LABEL); - - // Returns empty label instead of "custom" if the custom label is empty. - if (numberType == Phone.TYPE_CUSTOM && TextUtils.isEmpty(numberLabel)) { - return ""; - } - return (String) Phone.getTypeLabel(resources, numberType, numberLabel); + PhotoInfo.newBuilder() + .setPhotoId(speedDialUiItem.photoId()) + .setPhotoUri(speedDialUiItem.photoUri()) + .setName(speedDialUiItem.name()) + .setLookupUri( + Contacts.getLookupUri(speedDialUiItem.contactId(), speedDialUiItem.lookupKey()) + .toString()) + .build()); } @Override @@ -107,7 +99,7 @@ public class FavoritesViewHolder extends RecyclerView.ViewHolder if (hasDefaultNumber) { listener.onClick(number, isVideoCall); } else { - listener.onAmbiguousContactClicked(lookupKey); + listener.onAmbiguousContactClicked(channels); } } @@ -122,7 +114,7 @@ public class FavoritesViewHolder extends RecyclerView.ViewHolder public interface FavoriteContactsListener { /** Called when the user clicks on a favorite contact that doesn't have a default number. */ - void onAmbiguousContactClicked(String contactId); + void onAmbiguousContactClicked(List<Channel> channels); /** Called when the user clicks on a favorite contact. */ void onClick(String number, boolean isVideoCall); |