diff options
author | Michael Chan <mchan@android.com> | 2013-04-10 23:44:20 -0700 |
---|---|---|
committer | Michael Chan <mchan@android.com> | 2013-04-10 23:44:20 -0700 |
commit | b506b1dddd4007997bbe6773cb0ebced27ba96df (patch) | |
tree | bd71a1dd168b7657acddee601326b972cec59139 /src/com/android | |
parent | 2611b61fe86dcf46af7bb6ca63753839a569e1cc (diff) | |
download | android_frameworks_opt_timezonepicker-b506b1dddd4007997bbe6773cb0ebced27ba96df.tar.gz android_frameworks_opt_timezonepicker-b506b1dddd4007997bbe6773cb0ebced27ba96df.tar.bz2 android_frameworks_opt_timezonepicker-b506b1dddd4007997bbe6773cb0ebced27ba96df.zip |
Embedded country names in the app for ones not in framework
SX Sint Maarten
BQ Caribbean Netherlands
CW CuraƧao
SS South Sudan
Bug: 8558228
Change-Id: Id555c91b5ad14b562ae5e69d2a0f0774b8c9ab51
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/timezonepicker/TimeZoneData.java | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/src/com/android/timezonepicker/TimeZoneData.java b/src/com/android/timezonepicker/TimeZoneData.java index a0cfa4b..1105169 100644 --- a/src/com/android/timezonepicker/TimeZoneData.java +++ b/src/com/android/timezonepicker/TimeZoneData.java @@ -385,8 +385,7 @@ public class TimeZoneData { // name String country = mCountryCodeToNameMap.get(countryCode); if (country == null) { - country = new Locale(lang, countryCode) - .getDisplayCountry(Locale.getDefault()); + country = getCountryNames(lang, countryCode); mCountryCodeToNameMap.put(countryCode, country); } @@ -456,6 +455,38 @@ public class TimeZoneData { return processedTimeZones; } + @SuppressWarnings("unused") + private static Locale mBackupCountryLocale; + private static String[] mBackupCountryCodes; + private static String[] mBackupCountryNames; + + private String getCountryNames(String lang, String countryCode) { + final Locale defaultLocale = Locale.getDefault(); + String countryDisplayName = new Locale(lang, countryCode).getDisplayCountry(defaultLocale); + + if (!countryCode.equals(countryDisplayName)) { + return countryDisplayName; + } + + if (mBackupCountryCodes == null || !defaultLocale.equals(mBackupCountryLocale)) { + mBackupCountryLocale = defaultLocale; + mBackupCountryCodes = mContext.getResources().getStringArray( + R.array.backup_country_codes); + mBackupCountryNames = mContext.getResources().getStringArray( + R.array.backup_country_names); + } + + int length = Math.min(mBackupCountryCodes.length, mBackupCountryNames.length); + + for (int i = 0; i < length; i++) { + if (mBackupCountryCodes[i].equals(countryCode)) { + return mBackupCountryNames[i]; + } + } + + return countryCode; + } + private int getIdenticalTimeZoneInTheCountry(TimeZoneInfo timeZoneInfo) { int idx = 0; for (TimeZoneInfo tzi : mTimeZones) { |