summaryrefslogtreecommitdiffstats
path: root/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java')
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java45
1 files changed, 32 insertions, 13 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
index 7b5bfb5..d4e09ca 100644
--- a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
+++ b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
@@ -50,7 +50,8 @@ public class ZoneGetter {
public static final String KEY_DISPLAYNAME = "name"; // value: String
public static final String KEY_GMT = "gmt"; // value: String
public static final String KEY_OFFSET = "offset"; // value: int (Integer)
-
+ private static final String XML_ATTR_ID = "id";
+ private static final String XML_ATTR_LOCALIZE_IN_PICKER = "localizeInPicker";
private ZoneGetter() {}
public static String getTimeZoneOffsetAndName(TimeZone tz, Date now) {
@@ -85,7 +86,7 @@ public class ZoneGetter {
// selecting the wrong olson ids.
// Get the list of olson ids to display to the user.
- List<String> olsonIdsToDisplay = readTimezonesToDisplay(context);
+ List<ZoneInfo> olsonIdsToDisplay = readTimezonesToDisplay(context);
// Create a lookup of local zone IDs.
Set<String> localZoneIds = new TreeSet<String>();
@@ -97,9 +98,9 @@ public class ZoneGetter {
// be ambiguous.
Set<String> localZoneNames = new TreeSet<String>();
boolean localLongNamesAreAmbiguous = false;
- for (String olsonId : olsonIdsToDisplay) {
- if (localZoneIds.contains(olsonId)) {
- TimeZone tz = TimeZone.getTimeZone(olsonId);
+ for (ZoneInfo zoneInfo : olsonIdsToDisplay) {
+ if (localZoneIds.contains(zoneInfo.mOlsonId) && zoneInfo.mLocalizeInPicker) {
+ TimeZone tz = TimeZone.getTimeZone(zoneInfo.mOlsonId);
String zoneLongName = getZoneLongName(locale, tz, now);
boolean longNameIsUnique = localZoneNames.add(zoneLongName);
if (!longNameIsUnique) {
@@ -111,12 +112,13 @@ public class ZoneGetter {
// Generate the list of zone entries to return.
List<Map<String, Object>> zones = new ArrayList<Map<String, Object>>();
- for (String olsonId : olsonIdsToDisplay) {
- final TimeZone tz = TimeZone.getTimeZone(olsonId);
+ for (ZoneInfo zoneInfo: olsonIdsToDisplay) {
+ final TimeZone tz = TimeZone.getTimeZone(zoneInfo.mOlsonId);
// Exemplar location display is the default. The only time we intend to display the long
// name is when the olsonId is local AND long names are not ambiguous.
- boolean isLocalZoneId = localZoneIds.contains(olsonId);
- boolean preferLongName = isLocalZoneId && !localLongNamesAreAmbiguous;
+ boolean isLocalZoneId = localZoneIds.contains(zoneInfo.mOlsonId);
+ boolean preferLongName = isLocalZoneId && !localLongNamesAreAmbiguous
+ && zoneInfo.mLocalizeInPicker;
String displayName = getZoneDisplayName(locale, tz, now, preferLongName);
String gmtOffsetString = getGmtOffsetString(locale, tz, now);
@@ -162,8 +164,8 @@ public class ZoneGetter {
return TimeZoneNames.getExemplarLocation(locale.toString(), tz.getID());
}
- private static List<String> readTimezonesToDisplay(Context context) {
- List<String> olsonIds = new ArrayList<String>();
+ private static List<ZoneInfo> readTimezonesToDisplay(Context context) {
+ List<ZoneInfo> olsonIds = new ArrayList<>();
try (XmlResourceParser xrp = context.getResources().getXml(R.xml.timezones)) {
while (xrp.next() != XmlResourceParser.START_TAG) {
continue;
@@ -177,8 +179,10 @@ public class ZoneGetter {
xrp.next();
}
if (xrp.getName().equals(XMLTAG_TIMEZONE)) {
- String olsonId = xrp.getAttributeValue(0);
- olsonIds.add(olsonId);
+ String olsonId = xrp.getAttributeValue(null, XML_ATTR_ID);
+ boolean localize = xrp.getAttributeBooleanValue(null,
+ XML_ATTR_LOCALIZE_IN_PICKER, true);
+ olsonIds.add(new ZoneInfo(olsonId, localize));
}
while (xrp.getEventType() != XmlResourceParser.END_TAG) {
xrp.next();
@@ -212,4 +216,19 @@ public class ZoneGetter {
isRtl ? TextDirectionHeuristics.RTL : TextDirectionHeuristics.LTR);
return gmtString;
}
+
+ private static class ZoneInfo {
+ String mOlsonId;
+ boolean mLocalizeInPicker;
+
+ public ZoneInfo(String olsonId) {
+ mOlsonId = olsonId;
+ mLocalizeInPicker = false;
+ }
+
+ public ZoneInfo(String olsonId, boolean localizeInPicker) {
+ mOlsonId = olsonId;
+ mLocalizeInPicker = localizeInPicker;
+ }
+ }
}