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

Commit 4cda8209 authored by Nancy Chen's avatar Nancy Chen Committed by Android (Google) Code Review
Browse files

Merge "Add the city/locality to the displayed business information." into ub-contactsdialer-a-dev

parents 533be9ea a26fd83c
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -477,8 +477,10 @@
    <string name="distance_imperial_away"><xliff:g id="distance">%.1f</xliff:g> mi away</string>
    <!-- Used to inform the user how far away a location is in kilometers. [CHAR LIMIT=NONE] -->
    <string name="distance_metric_away"><xliff:g id="distance">%.1f</xliff:g> km away</string>
    <!-- Used to indicate the opening hours for a location as a time span. [CHAR LIMIT=NONE] -->
    <string name="opening_hours"><xliff:g id="open_time">%s</xliff:g> - <xliff:g id="close_time">%s</xliff:g></string>
    <!-- A shortened way to display a business address. Formatted [street address], [city/locality]. -->
    <string name="display_address"><xliff:g id="street_address">%1$s</xliff:g>, <xliff:g id="locality">%2$s</xliff:g></string>
    <!-- Used to indicate the opening hours for a location as a time span. e.g. "11 am - 9 pm" [CHAR LIMIT=NONE] -->
    <string name="opening_hours"><xliff:g id="open_time">%1$s</xliff:g> - <xliff:g id="close_time">%2$s</xliff:g></string>
    <!-- Displayed when a place is open. -->
    <string name="open_now">Open now</string>
    <!-- Displayed when a place is closed. -->
+18 −6
Original line number Diff line number Diff line
@@ -127,15 +127,15 @@ public class InCallContactInteractions {
     * business is open or not and the details set to the hours of operation.
     */
    private BusinessContextInfo constructHoursInfo(Pair<String, String> openingHours) {
        return constructHoursInfoByTime(Calendar.getInstance(), openingHours);
        return constructHoursInfo(Calendar.getInstance(), openingHours);
    }

    /**
     * Pass in arbitrary current calendar time.
     */
    @VisibleForTesting
    BusinessContextInfo constructHoursInfoByTime(
            Calendar currentTime, Pair<String, String> openingHours) {
    BusinessContextInfo constructHoursInfo(Calendar currentTime,
            Pair<String, String> openingHours) {
        BusinessContextInfo hoursInfo = new BusinessContextInfo();
        hoursInfo.iconId = R.drawable.ic_schedule_white_24dp;

@@ -170,8 +170,13 @@ public class InCallContactInteractions {
     * @return A BusinessContextInfo object with the location icon, the heading as the distance to
     * the business and the details containing the address.
     */
    private BusinessContextInfo constructLocationInfo(Address address, float distance) {
        return constructLocationInfo(Locale.getDefault(), address, distance);
    }

    @VisibleForTesting
    BusinessContextInfo constructLocationInfo(Address address, float distance) {
    BusinessContextInfo constructLocationInfo(Locale locale, Address address,
            float distance) {
        if (address == null) {
            return null;
        }
@@ -180,7 +185,7 @@ public class InCallContactInteractions {
        locationInfo.iconId = R.drawable.ic_location_on_white_24dp;
        if (distance != DistanceHelper.DISTANCE_NOT_FOUND) {
            //TODO: add a setting to allow the user to select "KM" or "MI" as their distance units.
            if (Locale.US.equals(Locale.getDefault())) {
            if (Locale.US.equals(locale)) {
                locationInfo.heading = mContext.getString(R.string.distance_imperial_away,
                        distance * DistanceHelper.MILES_PER_METER);
            } else {
@@ -188,7 +193,14 @@ public class InCallContactInteractions {
                        distance * DistanceHelper.KILOMETERS_PER_METER);
            }
        }
        if (address.getLocality() != null) {
            locationInfo.detail = mContext.getString(
                    R.string.display_address,
                    address.getAddressLine(0),
                    address.getLocality());
        } else {
            locationInfo.detail = address.getAddressLine(0);
        }
        return locationInfo;
    }

+64 −4
Original line number Diff line number Diff line
@@ -16,15 +16,18 @@

package com.android.incallui;

import android.location.Address;
import android.test.AndroidTestCase;
import android.util.Pair;

import com.android.incallui.InCallContactInteractions.BusinessContextInfo;

import java.util.Calendar;
import java.util.Locale;

public class InCallContactInteractionsTest extends AndroidTestCase {
    private InCallContactInteractions mInCallContactInteractions;
    private static final float TEST_DISTANCE = (float) 1234.56;

    @Override
    protected void setUp() {
@@ -35,7 +38,7 @@ public class InCallContactInteractionsTest extends AndroidTestCase {
        Calendar currentTimeForTest = Calendar.getInstance();
        currentTimeForTest.set(Calendar.HOUR_OF_DAY, 10);
        BusinessContextInfo info =
                mInCallContactInteractions.constructHoursInfoByTime(
                mInCallContactInteractions.constructHoursInfo(
                        currentTimeForTest,
                        Pair.create("0800", "2000"));
        assertEquals(mContext.getString(R.string.open_now), info.heading);
@@ -45,7 +48,7 @@ public class InCallContactInteractionsTest extends AndroidTestCase {
        Calendar currentTimeForTest = Calendar.getInstance();
        currentTimeForTest.set(Calendar.HOUR_OF_DAY, 6);
        BusinessContextInfo info =
                mInCallContactInteractions.constructHoursInfoByTime(
                mInCallContactInteractions.constructHoursInfo(
                        currentTimeForTest,
                        Pair.create("0800", "2000"));
        assertEquals(mContext.getString(R.string.closed_now), info.heading);
@@ -55,7 +58,7 @@ public class InCallContactInteractionsTest extends AndroidTestCase {
        Calendar currentTimeForTest = Calendar.getInstance();
        currentTimeForTest.set(Calendar.HOUR_OF_DAY, 21);
        BusinessContextInfo info =
                mInCallContactInteractions.constructHoursInfoByTime(
                mInCallContactInteractions.constructHoursInfo(
                        currentTimeForTest,
                        Pair.create("0800", "2000"));
        assertEquals(mContext.getString(R.string.closed_now), info.heading);
@@ -65,9 +68,66 @@ public class InCallContactInteractionsTest extends AndroidTestCase {
        Calendar currentTimeForTest = Calendar.getInstance();
        currentTimeForTest.set(Calendar.HOUR_OF_DAY, 21);
        BusinessContextInfo info =
                mInCallContactInteractions.constructHoursInfoByTime(
                mInCallContactInteractions.constructHoursInfo(
                        currentTimeForTest,
                        Pair.create("", "2000"));
        assertEquals(null, info);
    }

    public void testLocationInfo_ForUS() {
        BusinessContextInfo info =
                mInCallContactInteractions.constructLocationInfo(
                        Locale.US,
                        getAddressForTest(),
                        TEST_DISTANCE);
        assertEquals("0.8 mi away", info.heading);
        assertEquals("Test address, Test locality", info.detail);
    }

    public void testLocationInfo_ForNotUS() {
        BusinessContextInfo info =
                mInCallContactInteractions.constructLocationInfo(
                        Locale.CANADA,
                        getAddressForTest(),
                        TEST_DISTANCE);
        assertEquals("1.2 km away", info.heading);
        assertEquals("Test address, Test locality", info.detail);
    }

    public void testLocationInfo_NoLocality() {
        Address address = getAddressForTest();
        address.setLocality(null);
        BusinessContextInfo info =
                mInCallContactInteractions.constructLocationInfo(
                        Locale.CANADA,
                        address,
                        TEST_DISTANCE);
        assertEquals("1.2 km away", info.heading);
        assertEquals("Test address", info.detail);
    }

    public void testLocationInfo_NoAddress() {
        BusinessContextInfo info =
                mInCallContactInteractions.constructLocationInfo(
                        Locale.CANADA,
                        null,
                        TEST_DISTANCE);
        assertEquals(null, info);
    }

    public void testLocationInfo_NoDistance() {
        BusinessContextInfo info =
                mInCallContactInteractions.constructLocationInfo(
                        Locale.US,
                        getAddressForTest(),
                        DistanceHelper.DISTANCE_NOT_FOUND);
        assertEquals(null, info.heading);
    }

    private Address getAddressForTest() {
        Address address = new Address(Locale.US);
        address.setAddressLine(0, "Test address");
        address.setLocality("Test locality");
        return address;
    }
}