From: Victor Chang Date: Thu, 8 Mar 2018 15:05:14 +0000 (+0000) Subject: Show time zone standard name in FixedOffsetPreferenceController X-Git-Tag: android-x86-9.0-r1~78^2~10^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d251a10cd6ecb8227e7a644512db467fe9707d59;p=android-x86%2Fpackages-apps-Settings.git Show time zone standard name in FixedOffsetPreferenceController - Among all fixed offset time zone, only Etc/UTC has a time zone standard name. The name should be shown in both picker and preference's secondary text (summary). Bug: 74338688 Test: m RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.datetime.timezone Change-Id: I10c140f6054ab9acf6e0fb44528adef8b28fa23c --- diff --git a/src/com/android/settings/datetime/timezone/FixedOffsetPreferenceController.java b/src/com/android/settings/datetime/timezone/FixedOffsetPreferenceController.java index 16c1f193e5..234e7db7f4 100644 --- a/src/com/android/settings/datetime/timezone/FixedOffsetPreferenceController.java +++ b/src/com/android/settings/datetime/timezone/FixedOffsetPreferenceController.java @@ -17,7 +17,8 @@ package com.android.settings.datetime.timezone; import android.content.Context; -import android.support.v7.preference.Preference; + +import com.android.settings.R; public class FixedOffsetPreferenceController extends BaseTimeZonePreferenceController { @@ -31,8 +32,18 @@ public class FixedOffsetPreferenceController extends BaseTimeZonePreferenceContr @Override public CharSequence getSummary() { - // This is a Spannable object, which contains TTS span. It shouldn't be converted to String. - return mTimeZoneInfo == null ? "" : mTimeZoneInfo.getGmtOffset(); + if (mTimeZoneInfo == null) { + return ""; + } + + String standardName = mTimeZoneInfo.getStandardName(); + if (standardName == null) { + return mTimeZoneInfo.getGmtOffset(); + } else { + // GmtOffset is Spannable, which contains TTS span. It shouldn't be converted to String. + return SpannableUtil.getResourcesText(mContext.getResources(), + R.string.zone_info_offset_and_name, mTimeZoneInfo.getGmtOffset(), standardName); + } } public void setTimeZoneInfo(TimeZoneInfo timeZoneInfo) { diff --git a/tests/robotests/src/com/android/settings/datetime/timezone/FixedOffsetPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/timezone/FixedOffsetPreferenceControllerTest.java index 0ffb7d2c45..f657560f9b 100644 --- a/tests/robotests/src/com/android/settings/datetime/timezone/FixedOffsetPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/datetime/timezone/FixedOffsetPreferenceControllerTest.java @@ -40,10 +40,9 @@ public class FixedOffsetPreferenceControllerTest { } @Test - public void updateState_matchTimeZoneSummary() { + public void updateState_GmtMinus8_matchTimeZoneSummary() { TimeZoneInfo fixedOffsetZone = new TimeZoneInfo.Builder( TimeZone.getFrozenTimeZone("Etc/GMT-8")) - .setExemplarLocation("Los Angeles") .setGmtOffset("GMT-08:00") .setItemId(0) .build(); @@ -52,6 +51,21 @@ public class FixedOffsetPreferenceControllerTest { controller.setTimeZoneInfo(fixedOffsetZone); controller.updateState(preference); assertThat(preference.getSummary()).isEqualTo("GMT-08:00"); + } + @Test + public void updateState_Utc_matchTimeZoneSummary() { + TimeZoneInfo fixedOffsetZone = new TimeZoneInfo.Builder( + TimeZone.getFrozenTimeZone("Etc/UTC")) + .setStandardName("Coordinated Universal Time") + .setGmtOffset("GMT+00:00") + .setItemId(0) + .build(); + Preference preference = new Preference(mActivity); + FixedOffsetPreferenceController controller = new FixedOffsetPreferenceController(mActivity); + controller.setTimeZoneInfo(fixedOffsetZone); + controller.updateState(preference); + assertThat(preference.getSummary().toString()) + .isEqualTo("Coordinated Universal Time (GMT+00:00)"); } }