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
This commit is contained in:
Victor Chang
2018-03-08 15:05:14 +00:00
parent 3c5aeac39f
commit d251a10cd6
2 changed files with 30 additions and 5 deletions

View 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) {

View 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)");
}
}