From 938468da6f5c225ebb161a68bd949c9cf3261892 Mon Sep 17 00:00:00 2001 From: Eric Erfanian Date: Tue, 24 Oct 2017 14:05:52 -0700 Subject: Rename the new bubble package name from "bubble" to "newbubble". It fixes AOSP for package name conflict. Test: manual PiperOrigin-RevId: 173298696 Change-Id: Id10ebe0bcf029e61f65cf6580c7198abd8395081 --- .../voicemail/listui/VoicemailEntryText.java | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) (limited to 'java/com/android/dialer/voicemail/listui/VoicemailEntryText.java') diff --git a/java/com/android/dialer/voicemail/listui/VoicemailEntryText.java b/java/com/android/dialer/voicemail/listui/VoicemailEntryText.java index cf2fef253..f59220105 100644 --- a/java/com/android/dialer/voicemail/listui/VoicemailEntryText.java +++ b/java/com/android/dialer/voicemail/listui/VoicemailEntryText.java @@ -18,7 +18,11 @@ package com.android.dialer.voicemail.listui; import android.content.Context; import android.text.TextUtils; +import com.android.dialer.calllogutils.CallLogDates; +import com.android.dialer.common.LogUtil; +import com.android.dialer.time.Clock; import com.android.dialer.voicemail.model.VoicemailEntry; +import java.util.concurrent.TimeUnit; /** * Computes the primary text for voicemail entries. @@ -39,4 +43,66 @@ public class VoicemailEntryText { } return primaryText.toString(); } + + /** + * Uses the new date and location formatting rules to format the location and date in the new + * voicemail tab. + * + *

Rules: $Location • Date + * + *

Examples: + * + *

Jun 20 San Francisco • Now + * + *

Markham, ON • Jul 27 + * + *

Toledo, OH • 12:15 PM + * + *

Date rules: if < 1 minute ago: "Now"; else if today: HH:MM(am|pm); else if < 3 days: day; + * else: MON D * + * + * @return $Location • Date + */ + public static String buildSecondaryVoicemailText( + Context context, Clock clock, VoicemailEntry voicemailEntry) { + return secondaryTextPrefix(context, clock, voicemailEntry); + } + + private static String secondaryTextPrefix( + Context context, Clock clock, VoicemailEntry voicemailEntry) { + StringBuilder secondaryText = new StringBuilder(); + String location = voicemailEntry.geocodedLocation(); + if (!TextUtils.isEmpty(location)) { + secondaryText.append(location); + } + if (secondaryText.length() > 0) { + secondaryText.append(" • "); + } + secondaryText.append( + CallLogDates.newCallLogTimestampLabel( + context, clock.currentTimeMillis(), voicemailEntry.timestamp())); + + long duration = voicemailEntry.duration(); + if (duration >= 0) { + secondaryText.append(" • "); + String formattedDuration = getVoicemailDuration(context, voicemailEntry); + secondaryText.append(formattedDuration); + } + return secondaryText.toString(); + } + + private static String getVoicemailDuration(Context context, VoicemailEntry voicemailEntry) { + long minutes = TimeUnit.SECONDS.toMinutes(voicemailEntry.duration()); + long seconds = voicemailEntry.duration() - TimeUnit.MINUTES.toSeconds(minutes); + + // The format for duration is "MM:SS" and we never expect the duration to be > 5 minutes + // However an incorrect duration could be set by the framework/someone to be >99, and in that + // case cap it at 99, for the UI to still be able to display it in "MM:SS" format. + if (minutes > 99) { + LogUtil.w( + "VoicemailEntryText.getVoicemailDuration", "Duration was %d", voicemailEntry.duration()); + minutes = 99; + } + return context.getString(R.string.voicemailDurationFormat, minutes, seconds); + } } -- cgit v1.2.3