Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0dd79bbd authored by yaolu's avatar yaolu
Browse files

Show the duration of the call in QuickContact "Recent card"

bug 28806182

Change-Id: I3bc21dbe0096221264d7ffb955281a16a40c54f6
parent 8c21a2ae
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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>
+12 −3
Original line number Diff line number Diff line
@@ -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
+21 −0
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@ import java.text.DateFormat;

import java.util.Calendar;

import com.android.contacts.R;

/**
 * Utility methods for interactions and their loaders
 */
@@ -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);
        }
    }
}
+25 −0
Original line number Diff line number Diff line
@@ -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();