From 188b42fd10644373175fc204b48da98125004985 Mon Sep 17 00:00:00 2001 From: twyen Date: Thu, 11 Jan 2018 16:03:11 -0800 Subject: Merge PhoneLookupDataSource results into a proto in annotated call log. This allow extra information from PhoneLookup to be more easily added. Only PhoneLookupSelector and the proto will be affected for new attributes. Test: Unit tests. PiperOrigin-RevId: 181675568 Change-Id: I4e0bc1c6005b58a9b684b030b55bea6223af9ce3 --- .../voicemail/listui/NewVoicemailViewHolder.java | 14 +++++--- .../voicemail/listui/VoicemailCursorLoader.java | 40 ++++++++++------------ .../voicemail/listui/VoicemailEntryText.java | 4 +-- .../dialer/voicemail/listui/menu/Modules.java | 4 +-- .../voicemail/listui/menu/PrimaryAction.java | 10 +++--- .../dialer/voicemail/model/VoicemailEntry.java | 25 ++++---------- 6 files changed, 44 insertions(+), 53 deletions(-) (limited to 'java/com/android/dialer/voicemail') diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailViewHolder.java b/java/com/android/dialer/voicemail/listui/NewVoicemailViewHolder.java index 90581580d..46e29956d 100644 --- a/java/com/android/dialer/voicemail/listui/NewVoicemailViewHolder.java +++ b/java/com/android/dialer/voicemail/listui/NewVoicemailViewHolder.java @@ -27,6 +27,7 @@ import android.graphics.Typeface; import android.net.Uri; import android.provider.VoicemailContract.Voicemails; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.annotation.WorkerThread; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; @@ -205,13 +206,18 @@ final class NewVoicemailViewHolder extends RecyclerView.ViewHolder implements On ContactPhotoManager.getInstance(context) .loadDialerThumbnailOrPhoto( quickContactBadge, - voicemailEntry.lookupUri() == null ? null : Uri.parse(voicemailEntry.lookupUri()), - voicemailEntry.photoId(), - voicemailEntry.photoUri() == null ? null : Uri.parse(voicemailEntry.photoUri()), - voicemailEntry.name(), + parseUri(voicemailEntry.numberAttributes().getLookupUri()), + voicemailEntry.numberAttributes().getPhotoId(), + parseUri(voicemailEntry.numberAttributes().getPhotoUri()), + VoicemailEntryText.buildPrimaryVoicemailText(context, voicemailEntry), LetterTileDrawable.TYPE_DEFAULT); } + @Nullable + private static Uri parseUri(@Nullable String string) { + return TextUtils.isEmpty(string) ? null : Uri.parse(string); + } + void collapseViewHolder() { LogUtil.i( "NewVoicemailViewHolder.collapseViewHolder", diff --git a/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java b/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java index 55d36b364..7e0381871 100644 --- a/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java +++ b/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java @@ -21,6 +21,7 @@ import android.database.Cursor; import android.provider.CallLog.Calls; import android.support.v4.content.CursorLoader; import com.android.dialer.DialerPhoneNumber; +import com.android.dialer.NumberAttributes; import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog; import com.android.dialer.voicemail.model.VoicemailEntry; import com.google.protobuf.InvalidProtocolBufferException; @@ -33,35 +34,29 @@ final class VoicemailCursorLoader extends CursorLoader { new String[] { AnnotatedCallLog._ID, AnnotatedCallLog.TIMESTAMP, - AnnotatedCallLog.NAME, AnnotatedCallLog.NUMBER, AnnotatedCallLog.FORMATTED_NUMBER, - AnnotatedCallLog.PHOTO_URI, - AnnotatedCallLog.PHOTO_ID, - AnnotatedCallLog.LOOKUP_URI, AnnotatedCallLog.DURATION, AnnotatedCallLog.GEOCODED_LOCATION, AnnotatedCallLog.CALL_TYPE, AnnotatedCallLog.TRANSCRIPTION, AnnotatedCallLog.VOICEMAIL_URI, - AnnotatedCallLog.IS_READ + AnnotatedCallLog.IS_READ, + AnnotatedCallLog.NUMBER_ATTRIBUTES, }; // Indexes for VOICEMAIL_COLUMNS private static final int ID = 0; private static final int TIMESTAMP = 1; - private static final int NAME = 2; - private static final int NUMBER = 3; - private static final int FORMATTED_NUMBER = 4; - private static final int PHOTO_URI = 5; - private static final int PHOTO_ID = 6; - private static final int LOOKUP_URI = 7; - private static final int DURATION = 8; - private static final int GEOCODED_LOCATION = 9; - private static final int CALL_TYPE = 10; - private static final int TRANSCRIPTION = 11; - private static final int VOICEMAIL_URI = 12; - private static final int IS_READ = 13; + private static final int NUMBER = 2; + private static final int FORMATTED_NUMBER = 3; + private static final int DURATION = 4; + private static final int GEOCODED_LOCATION = 5; + private static final int CALL_TYPE = 6; + private static final int TRANSCRIPTION = 7; + private static final int VOICEMAIL_URI = 8; + private static final int IS_READ = 9; + private static final int NUMBER_ATTRIBUTES = 10; // TODO(zachh): Optimize indexes VoicemailCursorLoader(Context context) { @@ -82,22 +77,25 @@ final class VoicemailCursorLoader extends CursorLoader { } catch (InvalidProtocolBufferException e) { throw new IllegalStateException("Couldn't parse DialerPhoneNumber bytes"); } + NumberAttributes numberAttributes; + try { + numberAttributes = NumberAttributes.parseFrom(cursor.getBlob(NUMBER_ATTRIBUTES)); + } catch (InvalidProtocolBufferException e) { + throw new IllegalStateException("Couldn't parse NumberAttributes bytes"); + } return VoicemailEntry.builder() .setId(cursor.getInt(ID)) .setTimestamp(cursor.getLong(TIMESTAMP)) - .setName(cursor.getString(NAME)) .setNumber(number) .setFormattedNumber(cursor.getString(FORMATTED_NUMBER)) - .setPhotoUri(cursor.getString(PHOTO_URI)) - .setPhotoId(cursor.getLong(PHOTO_ID)) - .setLookupUri(cursor.getString(LOOKUP_URI)) .setDuration(cursor.getLong(DURATION)) .setTranscription(cursor.getString(TRANSCRIPTION)) .setVoicemailUri(cursor.getString(VOICEMAIL_URI)) .setGeocodedLocation(cursor.getString(GEOCODED_LOCATION)) .setCallType(cursor.getInt(CALL_TYPE)) .setIsRead(cursor.getInt(IS_READ)) + .setNumberAttributes(numberAttributes) .build(); } diff --git a/java/com/android/dialer/voicemail/listui/VoicemailEntryText.java b/java/com/android/dialer/voicemail/listui/VoicemailEntryText.java index d73d1f0de..4aaf2d1e7 100644 --- a/java/com/android/dialer/voicemail/listui/VoicemailEntryText.java +++ b/java/com/android/dialer/voicemail/listui/VoicemailEntryText.java @@ -33,8 +33,8 @@ public class VoicemailEntryText { public static String buildPrimaryVoicemailText(Context context, VoicemailEntry data) { StringBuilder primaryText = new StringBuilder(); - if (!TextUtils.isEmpty(data.name())) { - primaryText.append(data.name()); + if (!TextUtils.isEmpty(data.numberAttributes().getName())) { + primaryText.append(data.numberAttributes().getName()); } else if (!TextUtils.isEmpty(data.formattedNumber())) { primaryText.append(data.formattedNumber()); } else { diff --git a/java/com/android/dialer/voicemail/listui/menu/Modules.java b/java/com/android/dialer/voicemail/listui/menu/Modules.java index bb98d76eb..bd79932e7 100644 --- a/java/com/android/dialer/voicemail/listui/menu/Modules.java +++ b/java/com/android/dialer/voicemail/listui/menu/Modules.java @@ -40,8 +40,8 @@ final class Modules { context, modules, voicemailEntry.number(), - voicemailEntry.name(), - voicemailEntry.lookupUri()); + voicemailEntry.numberAttributes().getName(), + voicemailEntry.numberAttributes().getLookupUri()); String originalNumber = voicemailEntry.number().getRawInput().getNumber(); SharedModules.maybeAddModuleForSendingTextMessage(context, modules, originalNumber); diff --git a/java/com/android/dialer/voicemail/listui/menu/PrimaryAction.java b/java/com/android/dialer/voicemail/listui/menu/PrimaryAction.java index 7f4ac8052..7b8adfe30 100644 --- a/java/com/android/dialer/voicemail/listui/menu/PrimaryAction.java +++ b/java/com/android/dialer/voicemail/listui/menu/PrimaryAction.java @@ -38,12 +38,12 @@ final class PrimaryAction { .setNumber(voicemailEntry.number()) .setPhotoInfo( PhotoInfo.builder() - .setPhotoId(voicemailEntry.photoId()) - .setPhotoUri(voicemailEntry.photoUri()) + .setPhotoId(voicemailEntry.numberAttributes().getPhotoId()) + .setPhotoUri(voicemailEntry.numberAttributes().getPhotoUri()) .setIsVideo(false) .setContactType( LetterTileDrawable.TYPE_DEFAULT) // TODO(uabdullah): Use proper type. - .setDisplayName(voicemailEntry.name()) + .setDisplayName(voicemailEntry.numberAttributes().getName()) .build()) .setPrimaryText(buildPrimaryVoicemailText(context, voicemailEntry)) .setSecondaryText(buildSecondaryVoicemailText(voicemailEntry)) @@ -56,8 +56,8 @@ final class PrimaryAction { public static String buildPrimaryVoicemailText(Context context, VoicemailEntry data) { StringBuilder primaryText = new StringBuilder(); - if (!TextUtils.isEmpty(data.name())) { - primaryText.append(data.name()); + if (!TextUtils.isEmpty(data.numberAttributes().getName())) { + primaryText.append(data.numberAttributes().getName()); } else if (!TextUtils.isEmpty(data.formattedNumber())) { primaryText.append(data.formattedNumber()); } else { diff --git a/java/com/android/dialer/voicemail/model/VoicemailEntry.java b/java/com/android/dialer/voicemail/model/VoicemailEntry.java index 702f52d17..f17a23e54 100644 --- a/java/com/android/dialer/voicemail/model/VoicemailEntry.java +++ b/java/com/android/dialer/voicemail/model/VoicemailEntry.java @@ -19,6 +19,7 @@ package com.android.dialer.voicemail.model; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.android.dialer.DialerPhoneNumber; +import com.android.dialer.NumberAttributes; import com.google.auto.value.AutoValue; /** Data class containing the contents of a voicemail entry from the AnnotatedCallLog. */ @@ -30,7 +31,7 @@ public abstract class VoicemailEntry { .setId(0) .setTimestamp(0) .setNumber(DialerPhoneNumber.getDefaultInstance()) - .setPhotoId(0) + .setNumberAttributes(NumberAttributes.getDefaultInstance()) .setDuration(0) .setCallType(0) .setIsRead(0); @@ -43,20 +44,10 @@ public abstract class VoicemailEntry { @NonNull public abstract DialerPhoneNumber number(); - @Nullable - public abstract String name(); @Nullable public abstract String formattedNumber(); - @Nullable - public abstract String photoUri(); - - public abstract long photoId(); - - @Nullable - public abstract String lookupUri(); - @Nullable public abstract String geocodedLocation(); @@ -72,6 +63,8 @@ public abstract class VoicemailEntry { public abstract int isRead(); + public abstract NumberAttributes numberAttributes(); + /** Builder for {@link VoicemailEntry}. */ @AutoValue.Builder public abstract static class Builder { @@ -82,16 +75,8 @@ public abstract class VoicemailEntry { public abstract Builder setNumber(@NonNull DialerPhoneNumber number); - public abstract Builder setName(@Nullable String name); - public abstract Builder setFormattedNumber(@Nullable String formattedNumber); - public abstract Builder setPhotoUri(@Nullable String photoUri); - - public abstract Builder setPhotoId(long photoId); - - public abstract Builder setLookupUri(@Nullable String lookupUri); - public abstract Builder setDuration(long duration); public abstract Builder setTranscription(@Nullable String transcription); @@ -104,6 +89,8 @@ public abstract class VoicemailEntry { public abstract Builder setIsRead(int isRead); + public abstract Builder setNumberAttributes(NumberAttributes numberAttributes); + public abstract VoicemailEntry build(); } } -- cgit v1.2.3