Reformat timezone display name to de-emphasize GMT and sun.
Remove parentheses from around the GMT offset, and make both the sun and
the offset a lighter gray than the time.
Change-Id: I8d2ab13df2d278dc558d2b819af5fbcf2a6d2b68
diff --git a/src/com/android/timezonepicker/TimeZoneInfo.java b/src/com/android/timezonepicker/TimeZoneInfo.java
index d11bd2b..5a019a6 100644
--- a/src/com/android/timezonepicker/TimeZoneInfo.java
+++ b/src/com/android/timezonepicker/TimeZoneInfo.java
@@ -34,7 +34,8 @@
import java.util.TimeZone;
public class TimeZoneInfo implements Comparable<TimeZoneInfo> {
- private static final int DST_SYMBOL_COLOR = 0xFF606060;
+ private static final int GMT_TEXT_COLOR = TimeZonePickerUtils.GMT_TEXT_COLOR;
+ private static final int DST_SYMBOL_COLOR = TimeZonePickerUtils.DST_SYMBOL_COLOR;
private static final char SEPARATOR = ',';
private static final String TAG = null;
public static int NUM_OF_TRANSITIONS = 6;
@@ -165,21 +166,29 @@
// mFormatter writes to mSB
DateUtils.formatDateRange(context, mFormatter, now, now, flags, mTzId);
mSB.append(' ');
+ int gmtStart = mSB.length();
TimeZonePickerUtils.appendGmtOffset(mSB, gmtOffset);
+ int gmtEnd = mSB.length();
+ int symbolStart = 0;
+ int symbolEnd = 0;
if (hasFutureDST) {
mSB.append(' ');
+ symbolStart = mSB.length();
mSB.append(TimeZonePickerUtils.getDstSymbol()); // Sun symbol
-
- final int end = mSB.length();
- final int start = end - 1;
- Spannable spannableText = mSpannableFactory.newSpannable(mSB);
- spannableText.setSpan(new ForegroundColorSpan(DST_SYMBOL_COLOR), start, end,
- Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- displayName = spannableText;
- } else {
- displayName = mSB.toString();
+ symbolEnd = mSB.length();
}
+
+ // Set the gray colors.
+ Spannable spannableText = mSpannableFactory.newSpannable(mSB);
+ spannableText.setSpan(new ForegroundColorSpan(GMT_TEXT_COLOR),
+ gmtStart, gmtEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+
+ if (hasFutureDST) {
+ spannableText.setSpan(new ForegroundColorSpan(DST_SYMBOL_COLOR),
+ symbolStart, symbolEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ }
+ displayName = spannableText;
mGmtDisplayNameCache.put(cacheKey, displayName);
}
return displayName;
diff --git a/src/com/android/timezonepicker/TimeZonePickerUtils.java b/src/com/android/timezonepicker/TimeZonePickerUtils.java
index 783fcb9..9dae7aa 100644
--- a/src/com/android/timezonepicker/TimeZonePickerUtils.java
+++ b/src/com/android/timezonepicker/TimeZonePickerUtils.java
@@ -19,8 +19,11 @@
import android.content.Context;
import android.content.res.Resources;
import android.os.Build;
+import android.text.Spannable;
+import android.text.Spannable.Factory;
import android.text.format.DateUtils;
import android.text.format.Time;
+import android.text.style.ForegroundColorSpan;
import android.util.Log;
import java.util.Locale;
@@ -29,6 +32,10 @@
public class TimeZonePickerUtils {
private static final String TAG = "TimeZonePickerUtils";
+ public static final int GMT_TEXT_COLOR = 0xFFAAAAAA;
+ public static final int DST_SYMBOL_COLOR = 0xFFBFBFBF;
+ private static final Factory mSpannableFactory = Spannable.Factory.getInstance();
+
private Locale mDefaultLocale;
private String[] mOverrideIds;
private String[] mOverrideLabels;
@@ -47,14 +54,14 @@
/**
* Given a timezone id (e.g. America/Los_Angeles), returns the corresponding timezone
- * display name (e.g. (GMT-7.00) Pacific Time).
+ * display name (e.g. Pacific Time GMT-7).
*
* @param context Context in case the override labels need to be re-cached.
* @param id The timezone id
* @param millis The time (daylight savings or not)
* @return The display name of the timezone.
*/
- public String getGmtDisplayName(Context context, String id, long millis) {
+ public CharSequence getGmtDisplayName(Context context, String id, long millis) {
TimeZone timezone = TimeZone.getTimeZone(id);
if (timezone == null) {
return null;
@@ -70,27 +77,45 @@
return buildGmtDisplayName(timezone, millis);
}
- private String buildGmtDisplayName(TimeZone tz, long timeMillis) {
+ private CharSequence buildGmtDisplayName(TimeZone tz, long timeMillis) {
Time time = new Time(tz.getID());
time.set(timeMillis);
StringBuilder sb = new StringBuilder();
- final int gmtOffset = tz.getOffset(timeMillis);
- appendGmtOffset(sb, gmtOffset);
String displayName = getDisplayName(tz, time.isDst != 0);
- sb.append(" ");
sb.append(displayName);
+ sb.append(" ");
+ final int gmtOffset = tz.getOffset(timeMillis);
+ int gmtStart = sb.length();
+ appendGmtOffset(sb, gmtOffset);
+ int gmtEnd = sb.length();
+
+ int symbolStart = 0;
+ int symbolEnd = 0;
if (tz.useDaylightTime()) {
sb.append(" ");
+ symbolStart = sb.length();
sb.append(getDstSymbol()); // Sun symbol
+ symbolEnd = sb.length();
}
- return sb.toString();
+
+ // Set the gray colors.
+ Spannable spannableText = mSpannableFactory.newSpannable(sb);
+ spannableText.setSpan(new ForegroundColorSpan(GMT_TEXT_COLOR),
+ gmtStart, gmtEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ if (tz.useDaylightTime()) {
+ spannableText.setSpan(new ForegroundColorSpan(DST_SYMBOL_COLOR),
+ symbolStart, symbolEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ }
+
+ CharSequence gmtDisplayName = spannableText;
+ return gmtDisplayName;
}
public static void appendGmtOffset(StringBuilder sb, final int gmtOffset) {
- sb.append("(GMT");
+ sb.append("GMT");
if (gmtOffset < 0) {
sb.append('-');
@@ -109,7 +134,6 @@
}
sb.append(min);
}
- sb.append(')');
}
public static char getDstSymbol() {