Settings: Ensure zen day-of-week formats use current locale.

Don't share SimpleDateFormat instances per-process, convert to
per-instance to ensure we're always using the current locale.

Updated version of:
  https://android-review.googlesource.com/#/c/147246/

Change-Id: Id464c35035c1de0a7894e5e19b57934f77df9769
This commit is contained in:
John Spurlock
2015-04-23 20:28:58 -04:00
parent 1049f4d81b
commit 4f8d4f0d2b
3 changed files with 10 additions and 7 deletions

View File

@@ -48,10 +48,11 @@ import java.util.List;
import java.util.TreeSet; import java.util.TreeSet;
public class ZenModeAutomationSettings extends ZenModeSettingsBase { public class ZenModeAutomationSettings extends ZenModeSettingsBase {
private static final SimpleDateFormat DAY_FORMAT = new SimpleDateFormat("EEE");
static final Config CONFIG = getConditionProviderConfig(); static final Config CONFIG = getConditionProviderConfig();
// per-instance to ensure we're always using the current locale
private final SimpleDateFormat mDayFormat = new SimpleDateFormat("EEE");
private final Calendar mCalendar = Calendar.getInstance(); private final Calendar mCalendar = Calendar.getInstance();
private ServiceListing mServiceListing; private ServiceListing mServiceListing;
@@ -218,7 +219,7 @@ public class ZenModeAutomationSettings extends ZenModeSettingsBase {
private String dayString(int day) { private String dayString(int day) {
mCalendar.set(Calendar.DAY_OF_WEEK, day); mCalendar.set(Calendar.DAY_OF_WEEK, day);
return DAY_FORMAT.format(mCalendar.getTime()); return mDayFormat.format(mCalendar.getTime());
} }
private static Config getConditionProviderConfig() { private static Config getConditionProviderConfig() {

View File

@@ -41,8 +41,9 @@ public class ZenModeScheduleDaysSelection extends ScrollView {
Calendar.FRIDAY, Calendar.FRIDAY,
Calendar.SATURDAY, Calendar.SATURDAY,
}; };
private static final SimpleDateFormat DAY_FORMAT = new SimpleDateFormat("EEEE");
// per-instance to ensure we're always using the current locale
private final SimpleDateFormat mDayFormat = new SimpleDateFormat("EEEE");
private final SparseBooleanArray mDays = new SparseBooleanArray(); private final SparseBooleanArray mDays = new SparseBooleanArray();
private final LinearLayout mLayout; private final LinearLayout mLayout;
@@ -66,7 +67,7 @@ public class ZenModeScheduleDaysSelection extends ScrollView {
final CheckBox checkBox = (CheckBox) inflater.inflate(R.layout.zen_schedule_rule_day, final CheckBox checkBox = (CheckBox) inflater.inflate(R.layout.zen_schedule_rule_day,
this, false); this, false);
c.set(Calendar.DAY_OF_WEEK, day); c.set(Calendar.DAY_OF_WEEK, day);
checkBox.setText(DAY_FORMAT.format(c.getTime())); checkBox.setText(mDayFormat.format(c.getTime()));
checkBox.setChecked(mDays.get(day)); checkBox.setChecked(mDays.get(day));
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override @Override

View File

@@ -50,10 +50,11 @@ public class ZenModeScheduleRuleSettings extends ZenModeRuleSettingsBase {
private static final String KEY_START_TIME = "start_time"; private static final String KEY_START_TIME = "start_time";
private static final String KEY_END_TIME = "end_time"; private static final String KEY_END_TIME = "end_time";
private static final SimpleDateFormat DAY_FORMAT = new SimpleDateFormat("EEE");
public static final String ACTION = Settings.ACTION_ZEN_MODE_SCHEDULE_RULE_SETTINGS; public static final String ACTION = Settings.ACTION_ZEN_MODE_SCHEDULE_RULE_SETTINGS;
// per-instance to ensure we're always using the current locale
private final SimpleDateFormat mDayFormat = new SimpleDateFormat("EEE");
private Preference mDays; private Preference mDays;
private TimePickerPreference mStart; private TimePickerPreference mStart;
private TimePickerPreference mEnd; private TimePickerPreference mEnd;
@@ -147,7 +148,7 @@ public class ZenModeScheduleRuleSettings extends ZenModeRuleSettingsBase {
if (sb.length() > 0) { if (sb.length() > 0) {
sb.append(mContext.getString(R.string.summary_divider_text)); sb.append(mContext.getString(R.string.summary_divider_text));
} }
sb.append(DAY_FORMAT.format(c.getTime())); sb.append(mDayFormat.format(c.getTime()));
break; break;
} }
} }