Loading res/values/strings.xml +9 −0 Original line number Diff line number Diff line Loading @@ -1793,4 +1793,13 @@ <!-- Content description for (...) in no name header [CHAR LIMIT=30]--> <string name="description_no_name_header">Ellipsis</string> <!-- Formatted call duration displayed in recent card in QuickContact, for duration less than 1 minute --> <string name="callDurationSecondFormat"><xliff:g id="seconds">%s</xliff:g> sec</string> <!-- Formatted call duration displayed in recent card in QuickContact, for duration less than 1 hour --> <string name="callDurationMinuteFormat"><xliff:g id="minutes">%s</xliff:g> min <xliff:g id="seconds">%s</xliff:g> sec</string> <!-- Formatted call duration displayed in recent card in QuickContact, for duration more than 1 hour --> <string name="callDurationHourFormat"><xliff:g id="minutes">%s</xliff:g> hr <xliff:g id="minutes">%s</xliff:g> min <xliff:g id="seconds">%s</xliff:g> sec</string> </resources> src/com/android/contacts/interactions/CallLogInteraction.java +12 −3 Original line number Diff line number Diff line Loading @@ -87,9 +87,18 @@ public class CallLogInteraction implements ContactInteraction { @Override public String getViewFooter(Context context) { Long date = getDate(); return date == null ? null : ContactInteractionUtil.formatDateStringFromTimestamp( date, context); final Long date = getDate(); if (date != null) { final StringBuilder callDetail = new StringBuilder(); callDetail.append(ContactInteractionUtil.formatDateStringFromTimestamp(date, context)); final Long duration = getDuration(); if (duration != null) { callDetail.append("\n"); callDetail.append(ContactInteractionUtil.formatDuration(duration, context)); } return callDetail.toString(); } return null; } @Override Loading src/com/android/contacts/interactions/ContactInteractionUtil.java +21 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import java.text.DateFormat; import java.util.Calendar; import com.android.contacts.R; /** * Utility methods for interactions and their loaders */ Loading Loading @@ -84,4 +86,23 @@ public class ContactInteractionUtil { return c1.get(Calendar.YEAR) == c2.get(Calendar.YEAR) && c1.get(Calendar.DAY_OF_YEAR) == c2.get(Calendar.DAY_OF_YEAR); } /** * Takes duration of the call in seconds. * Return the formatted duration in hr, min, sec order if they exist. */ @NeededForTesting public static String formatDuration(long callDuration, Context context) { final int hours = (int) callDuration / 3600; final int minutes = (int) (callDuration % 3600) / 60; final int seconds = (int) (callDuration % 60); if (hours > 0) { return context.getString(R.string.callDurationHourFormat, hours, minutes, seconds); } else if (minutes > 0) { return context.getString(R.string.callDurationMinuteFormat, minutes, seconds); } else { return context.getString(R.string.callDurationSecondFormat, seconds); } } } tests/src/com/android/contacts/interactions/ContactInteractionUtilTest.java +25 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,31 @@ public class ContactInteractionUtilTest extends AndroidTestCase { getContext())); } public void testFormatDuration_zero() { assertEquals("0 sec", ContactInteractionUtil.formatDuration(0, getContext())); } public void testFormatDuration_minZeroSec() { assertEquals("1 min 0 sec", ContactInteractionUtil.formatDuration(60, getContext())); } public void testFormatDuration_minSec() { assertEquals("30 min 9 sec", ContactInteractionUtil.formatDuration(1809, getContext())); } public void testFormatDuration_hrZeroMinZeroSec() { assertEquals("1 hr 0 min 0 sec", ContactInteractionUtil.formatDuration(3600, getContext())); } public void testFormatDuration_hrMinSec() { assertEquals("2 hr 44 min 36 sec", ContactInteractionUtil.formatDuration(9876, getContext())); } private void setLocale(Locale locale) { Locale.setDefault(locale); Resources res = getContext().getResources(); Loading Loading
res/values/strings.xml +9 −0 Original line number Diff line number Diff line Loading @@ -1793,4 +1793,13 @@ <!-- Content description for (...) in no name header [CHAR LIMIT=30]--> <string name="description_no_name_header">Ellipsis</string> <!-- Formatted call duration displayed in recent card in QuickContact, for duration less than 1 minute --> <string name="callDurationSecondFormat"><xliff:g id="seconds">%s</xliff:g> sec</string> <!-- Formatted call duration displayed in recent card in QuickContact, for duration less than 1 hour --> <string name="callDurationMinuteFormat"><xliff:g id="minutes">%s</xliff:g> min <xliff:g id="seconds">%s</xliff:g> sec</string> <!-- Formatted call duration displayed in recent card in QuickContact, for duration more than 1 hour --> <string name="callDurationHourFormat"><xliff:g id="minutes">%s</xliff:g> hr <xliff:g id="minutes">%s</xliff:g> min <xliff:g id="seconds">%s</xliff:g> sec</string> </resources>
src/com/android/contacts/interactions/CallLogInteraction.java +12 −3 Original line number Diff line number Diff line Loading @@ -87,9 +87,18 @@ public class CallLogInteraction implements ContactInteraction { @Override public String getViewFooter(Context context) { Long date = getDate(); return date == null ? null : ContactInteractionUtil.formatDateStringFromTimestamp( date, context); final Long date = getDate(); if (date != null) { final StringBuilder callDetail = new StringBuilder(); callDetail.append(ContactInteractionUtil.formatDateStringFromTimestamp(date, context)); final Long duration = getDuration(); if (duration != null) { callDetail.append("\n"); callDetail.append(ContactInteractionUtil.formatDuration(duration, context)); } return callDetail.toString(); } return null; } @Override Loading
src/com/android/contacts/interactions/ContactInteractionUtil.java +21 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import java.text.DateFormat; import java.util.Calendar; import com.android.contacts.R; /** * Utility methods for interactions and their loaders */ Loading Loading @@ -84,4 +86,23 @@ public class ContactInteractionUtil { return c1.get(Calendar.YEAR) == c2.get(Calendar.YEAR) && c1.get(Calendar.DAY_OF_YEAR) == c2.get(Calendar.DAY_OF_YEAR); } /** * Takes duration of the call in seconds. * Return the formatted duration in hr, min, sec order if they exist. */ @NeededForTesting public static String formatDuration(long callDuration, Context context) { final int hours = (int) callDuration / 3600; final int minutes = (int) (callDuration % 3600) / 60; final int seconds = (int) (callDuration % 60); if (hours > 0) { return context.getString(R.string.callDurationHourFormat, hours, minutes, seconds); } else if (minutes > 0) { return context.getString(R.string.callDurationMinuteFormat, minutes, seconds); } else { return context.getString(R.string.callDurationSecondFormat, seconds); } } }
tests/src/com/android/contacts/interactions/ContactInteractionUtilTest.java +25 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,31 @@ public class ContactInteractionUtilTest extends AndroidTestCase { getContext())); } public void testFormatDuration_zero() { assertEquals("0 sec", ContactInteractionUtil.formatDuration(0, getContext())); } public void testFormatDuration_minZeroSec() { assertEquals("1 min 0 sec", ContactInteractionUtil.formatDuration(60, getContext())); } public void testFormatDuration_minSec() { assertEquals("30 min 9 sec", ContactInteractionUtil.formatDuration(1809, getContext())); } public void testFormatDuration_hrZeroMinZeroSec() { assertEquals("1 hr 0 min 0 sec", ContactInteractionUtil.formatDuration(3600, getContext())); } public void testFormatDuration_hrMinSec() { assertEquals("2 hr 44 min 36 sec", ContactInteractionUtil.formatDuration(9876, getContext())); } private void setLocale(Locale locale) { Locale.setDefault(locale); Resources res = getContext().getResources(); Loading