OSDN Git Service

Show time zone standard name in FixedOffsetPreferenceController
authorVictor Chang <vichang@google.com>
Thu, 8 Mar 2018 15:05:14 +0000 (15:05 +0000)
committerVictor Chang <vichang@google.com>
Thu, 8 Mar 2018 15:13:15 +0000 (15:13 +0000)
- 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

src/com/android/settings/datetime/timezone/FixedOffsetPreferenceController.java
tests/robotests/src/com/android/settings/datetime/timezone/FixedOffsetPreferenceControllerTest.java

index 16c1f19..234e7db 100644 (file)
@@ -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) {
index 0ffb7d2..f657560 100644 (file)
@@ -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)");
     }
 }