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

Commit df366319 authored by Roozbeh Pournader's avatar Roozbeh Pournader
Browse files

Remove duration_hours etc and use ICU data

The ICU data is higher quality and supports a wider selection of
locales.

Also, previously spaces were used to separate the fields, which is
not the correct separator in some locales.

Bug: 33670388
Test: manual
Change-Id: I99715dba63478a5bb319da041d1736ad247f2be1
parent 5e154ee9
Loading
Loading
Loading
Loading
+0 −16
Original line number Diff line number Diff line
@@ -472,22 +472,6 @@
    <!-- This can be used in any application wanting to disable the text "Emergency number" -->
    <string name="emergency_call_dialog_number_for_display">Emergency number</string>

    <!-- Phrase describing a time duration using seconds [CHAR LIMIT=16] -->
    <plurals name="duration_seconds">
        <item quantity="one">1 second</item>
        <item quantity="other"><xliff:g id="count">%d</xliff:g> seconds</item>
    </plurals>
    <!-- Phrase describing a time duration using minutes [CHAR LIMIT=16] -->
    <plurals name="duration_minutes">
        <item quantity="one">1 minute</item>
        <item quantity="other"><xliff:g id="count">%d</xliff:g> minutes</item>
    </plurals>
    <!-- Phrase describing a time duration using hours [CHAR LIMIT=16] -->
    <plurals name="duration_hours">
        <item quantity="one">1 hour</item>
        <item quantity="other"><xliff:g id="count">%d</xliff:g> hours</item>
    </plurals>

    <!-- Description of the profile photo shown when the device's camera is disabled udring a video
        call. [CHAR LIMIT=NONE] -->
    <string name="profile_photo_description">Profile photo</string>
+1 −1
Original line number Diff line number Diff line
@@ -917,7 +917,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
            mElapsedTime.setText(callTimeElapsed);

            String durationDescription =
                    InCallDateUtils.formatDuration(getView().getContext(), duration);
                    InCallDateUtils.formatDuration(duration);
            mElapsedTime.setContentDescription(
                    !TextUtils.isEmpty(durationDescription) ? durationDescription : null);
        } else {
+23 −26
Original line number Diff line number Diff line
package com.android.incallui;

import android.content.Context;
import android.content.res.Resources;
import android.icu.text.MeasureFormat;
import android.icu.text.MeasureFormat.FormatWidth;
import android.icu.util.Measure;
import android.icu.util.MeasureUnit;

import com.android.dialer.R;
import java.util.ArrayList;
import java.util.Locale;

/**
 * Methods to parse time and date information in the InCallUi
@@ -14,7 +17,7 @@ public class InCallDateUtils {
     * Return given duration in a human-friendly format. For example, "4 minutes 3 seconds" or
     * "3 hours 1 second". Returns the hours, minutes and seconds in that order if they exist.
     */
    public static String formatDuration(Context context, long millis) {
    public static String formatDuration(long millis) {
        int hours = 0;
        int minutes = 0;
        int seconds = 0;
@@ -29,28 +32,22 @@ public class InCallDateUtils {
        }
        seconds = elapsedSeconds;

        final Resources res = context.getResources();
        StringBuilder duration = new StringBuilder();
        try {
        final ArrayList<Measure> measures = new ArrayList<Measure>();
        if (hours > 0) {
                duration.append(res.getQuantityString(R.plurals.duration_hours, hours, hours));
            measures.add(new Measure(hours, MeasureUnit.HOUR));
        }
        if (minutes > 0) {
                if (hours > 0) {
                    duration.append(' ');
                }
                duration.append(res.getQuantityString(R.plurals.duration_minutes, minutes, minutes));
            measures.add(new Measure(minutes, MeasureUnit.MINUTE));
        }
        if (seconds > 0) {
                if (hours > 0 || minutes > 0) {
                    duration.append(' ');
            measures.add(new Measure(seconds, MeasureUnit.SECOND));
        }
                duration.append(res.getQuantityString(R.plurals.duration_seconds, seconds, seconds));
            }
        } catch (Resources.NotFoundException e) {
            // Ignore; plurals throws an exception for an untranslated quantity for a given locale.
            return null;

        if (measures.isEmpty()) {
            return "";
        } else {
            return MeasureFormat.getInstance(Locale.getDefault(), FormatWidth.WIDE)
                    .formatMeasures((Measure[]) measures.toArray());
        }
        return duration.toString();
    }
}