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:
@@ -17,7 +17,8 @@
|
|||||||
package com.android.settings.datetime.timezone;
|
package com.android.settings.datetime.timezone;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.support.v7.preference.Preference;
|
|
||||||
|
import com.android.settings.R;
|
||||||
|
|
||||||
public class FixedOffsetPreferenceController extends BaseTimeZonePreferenceController {
|
public class FixedOffsetPreferenceController extends BaseTimeZonePreferenceController {
|
||||||
|
|
||||||
@@ -31,8 +32,18 @@ public class FixedOffsetPreferenceController extends BaseTimeZonePreferenceContr
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CharSequence getSummary() {
|
public CharSequence getSummary() {
|
||||||
// This is a Spannable object, which contains TTS span. It shouldn't be converted to String.
|
if (mTimeZoneInfo == null) {
|
||||||
return mTimeZoneInfo == null ? "" : mTimeZoneInfo.getGmtOffset();
|
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) {
|
public void setTimeZoneInfo(TimeZoneInfo timeZoneInfo) {
|
||||||
|
@@ -40,10 +40,9 @@ public class FixedOffsetPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateState_matchTimeZoneSummary() {
|
public void updateState_GmtMinus8_matchTimeZoneSummary() {
|
||||||
TimeZoneInfo fixedOffsetZone = new TimeZoneInfo.Builder(
|
TimeZoneInfo fixedOffsetZone = new TimeZoneInfo.Builder(
|
||||||
TimeZone.getFrozenTimeZone("Etc/GMT-8"))
|
TimeZone.getFrozenTimeZone("Etc/GMT-8"))
|
||||||
.setExemplarLocation("Los Angeles")
|
|
||||||
.setGmtOffset("GMT-08:00")
|
.setGmtOffset("GMT-08:00")
|
||||||
.setItemId(0)
|
.setItemId(0)
|
||||||
.build();
|
.build();
|
||||||
@@ -52,6 +51,21 @@ public class FixedOffsetPreferenceControllerTest {
|
|||||||
controller.setTimeZoneInfo(fixedOffsetZone);
|
controller.setTimeZoneInfo(fixedOffsetZone);
|
||||||
controller.updateState(preference);
|
controller.updateState(preference);
|
||||||
assertThat(preference.getSummary()).isEqualTo("GMT-08:00");
|
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)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user