Commit 5c619182 authored by Sam Blitzstein's avatar Sam Blitzstein Committed by Android Git Automerger
Browse files

am 569e07e2: Merge "Reformat timezone display name to de-emphasize GMT and sun." into jb-mr2-dev

* commit '569e07e2':
  Reformat timezone display name to de-emphasize GMT and sun.
parents 2dd59ae1 569e07e2
......@@ -34,7 +34,8 @@ import java.util.Locale;
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 @@ public class TimeZoneInfo implements Comparable<TimeZoneInfo> {
// 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
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);
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();
if (hasFutureDST) {
spannableText.setSpan(new ForegroundColorSpan(DST_SYMBOL_COLOR),
symbolStart, symbolEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
displayName = spannableText;
mGmtDisplayNameCache.put(cacheKey, displayName);
}
return displayName;
......
......@@ -19,8 +19,11 @@ package com.android.timezonepicker;
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 @@ import java.util.TimeZone;
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 @@ public class TimeZonePickerUtils {
/**
* 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 @@ public class TimeZonePickerUtils {
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();
}
// 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);
}
return sb.toString();
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 @@ public class TimeZonePickerUtils {
}
sb.append(min);
}
sb.append(')');
}
public static char getDstSymbol() {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment