blob: d40352f4b582cd45bd83f78e8a2bee9b081bf37a [file] [log] [blame]
Adam Lesinski282e1812014-01-23 18:17:42 -08001/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package libcore.icu;
18
19import com.android.tools.layoutlib.annotations.LayoutlibDelegate;
Deepanshu Gupta03a057c2013-11-06 15:15:32 +053020import com.ibm.icu.text.DateTimePatternGenerator;
21import com.ibm.icu.util.ULocale;
Adam Lesinski282e1812014-01-23 18:17:42 -080022
23import java.util.Locale;
24
25/**
26 * Delegate implementing the native methods of libcore.icu.ICU
27 *
28 * Through the layoutlib_create tool, the original native methods of ICU have been replaced
29 * by calls to methods of the same name in this delegate class.
30 *
31 */
32public class ICU_Delegate {
33
34 // --- Java delegates
35
36 @LayoutlibDelegate
37 /*package*/ static String toLowerCase(String s, String localeName) {
38 return s.toLowerCase();
39 }
40
41 @LayoutlibDelegate
42 /*package*/ static String toUpperCase(String s, String localeName) {
43 return s.toUpperCase();
44 }
45
46 // --- Native methods accessing ICU's database.
47
48 @LayoutlibDelegate
Deepanshu Guptabd28e2d2014-01-27 11:45:47 -080049 /*package*/ static String getBestDateTimePatternNative(String skeleton, String localeName) {
Deepanshu Gupta03a057c2013-11-06 15:15:32 +053050 return DateTimePatternGenerator.getInstance(new ULocale(localeName))
51 .getBestPattern(skeleton);
Adam Lesinski282e1812014-01-23 18:17:42 -080052 }
53
54 @LayoutlibDelegate
55 /*package*/ static String getCldrVersion() {
56 return "22.1.1"; // TODO: check what the right value should be.
57 }
58
59 @LayoutlibDelegate
60 /*package*/ static String getIcuVersion() {
61 return "unknown_layoutlib";
62 }
63
64 @LayoutlibDelegate
65 /*package*/ static String getUnicodeVersion() {
66 return "5.2";
67 }
68
69 @LayoutlibDelegate
70 /*package*/ static String[] getAvailableBreakIteratorLocalesNative() {
71 return new String[0];
72 }
73
74 @LayoutlibDelegate
75 /*package*/ static String[] getAvailableCalendarLocalesNative() {
76 return new String[0];
77 }
78
79 @LayoutlibDelegate
80 /*package*/ static String[] getAvailableCollatorLocalesNative() {
81 return new String[0];
82 }
83
84 @LayoutlibDelegate
85 /*package*/ static String[] getAvailableDateFormatLocalesNative() {
86 return new String[0];
87 }
88
89 @LayoutlibDelegate
90 /*package*/ static String[] getAvailableLocalesNative() {
91 return new String[0];
92 }
93
94 @LayoutlibDelegate
95 /*package*/ static String[] getAvailableNumberFormatLocalesNative() {
96 return new String[0];
97 }
98
99 @LayoutlibDelegate
100 /*package*/ static String[] getAvailableCurrencyCodes() {
101 return new String[0];
102 }
103
104 @LayoutlibDelegate
105 /*package*/ static String getCurrencyCode(String locale) {
106 return "";
107 }
108
109 @LayoutlibDelegate
110 /*package*/ static String getCurrencyDisplayName(String locale, String currencyCode) {
111 return "";
112 }
113
114 @LayoutlibDelegate
115 /*package*/ static int getCurrencyFractionDigits(String currencyCode) {
116 return 0;
117 }
118
119 @LayoutlibDelegate
120 /*package*/ static String getCurrencySymbol(String locale, String currencyCode) {
121 return "";
122 }
123
124 @LayoutlibDelegate
125 /*package*/ static String getDisplayCountryNative(String countryCode, String locale) {
126 return "";
127 }
128
129 @LayoutlibDelegate
130 /*package*/ static String getDisplayLanguageNative(String languageCode, String locale) {
131 return "";
132 }
133
134 @LayoutlibDelegate
135 /*package*/ static String getDisplayVariantNative(String variantCode, String locale) {
136 return "";
137 }
138
139 @LayoutlibDelegate
Deepanshu Guptae05bb952014-01-28 18:55:33 -0800140 /*package*/ static String getDisplayScriptNative(String variantCode, String locale) {
141 return "";
142 }
143
144 @LayoutlibDelegate
Adam Lesinski282e1812014-01-23 18:17:42 -0800145 /*package*/ static String getISO3CountryNative(String locale) {
146 return "";
147 }
148
149 @LayoutlibDelegate
150 /*package*/ static String getISO3LanguageNative(String locale) {
151 return "";
152 }
153
154 @LayoutlibDelegate
155 /*package*/ static String addLikelySubtags(String locale) {
156 return "";
157 }
158
159 @LayoutlibDelegate
160 /*package*/ static String getScript(String locale) {
161 return "";
162 }
163
164 @LayoutlibDelegate
165 /*package*/ static String[] getISOLanguagesNative() {
166 return Locale.getISOLanguages();
167 }
168
169 @LayoutlibDelegate
170 /*package*/ static String[] getISOCountriesNative() {
171 return Locale.getISOCountries();
172 }
173
Deepanshu Guptae05bb952014-01-28 18:55:33 -0800174
175 @LayoutlibDelegate
176 /*package*/ static String localeForLanguageTag(String languageTag, boolean strict) {
177 return "";
178 }
179
180 @LayoutlibDelegate
181 /*package*/ static String languageTagForLocale(String locale) {
182 return "";
183 }
184
Adam Lesinski282e1812014-01-23 18:17:42 -0800185 @LayoutlibDelegate
Deepanshu Guptabd28e2d2014-01-27 11:45:47 -0800186 /*package*/ static boolean initLocaleDataNative(String locale, LocaleData result) {
Adam Lesinski282e1812014-01-23 18:17:42 -0800187
188 // Used by Calendar.
189 result.firstDayOfWeek = Integer.valueOf(1);
190 result.minimalDaysInFirstWeek = Integer.valueOf(1);
191
192 // Used by DateFormatSymbols.
193 result.amPm = new String[] { "AM", "PM" };
194 result.eras = new String[] { "BC", "AD" };
195
196 result.longMonthNames = new String[] { "January", "February", "March", "April", "May",
197 "June", "July", "August", "September", "October", "November", "December" };
198 result.shortMonthNames = new String[] { "Jan", "Feb", "Mar", "Apr", "May",
199 "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
200 result.longStandAloneMonthNames = result.longMonthNames;
201 result.shortStandAloneMonthNames = result.shortMonthNames;
202
Deepanshu Gupta03a057c2013-11-06 15:15:32 +0530203 // The platform code expects this to begin at index 1, rather than 0. It maps it directly to
204 // the constants from java.util.Calendar.<weekday>
Adam Lesinski282e1812014-01-23 18:17:42 -0800205 result.longWeekdayNames = new String[] {
Deepanshu Gupta03a057c2013-11-06 15:15:32 +0530206 "", "Sunday", "Monday" ,"Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
Adam Lesinski282e1812014-01-23 18:17:42 -0800207 result.shortWeekdayNames = new String[] {
Deepanshu Gupta03a057c2013-11-06 15:15:32 +0530208 "", "Sun", "Mon" ,"Tue", "Wed", "Thu", "Fri", "Sat" };
209 result.tinyWeekdayNames = new String[] {
210 "", "S", "M", "T", "W", "T", "F", "S" };
211
Adam Lesinski282e1812014-01-23 18:17:42 -0800212 result.longStandAloneWeekdayNames = result.longWeekdayNames;
213 result.shortStandAloneWeekdayNames = result.shortWeekdayNames;
Deepanshu Gupta03a057c2013-11-06 15:15:32 +0530214 result.tinyStandAloneWeekdayNames = result.tinyWeekdayNames;
Adam Lesinski282e1812014-01-23 18:17:42 -0800215
216 result.fullTimeFormat = "";
217 result.longTimeFormat = "";
218 result.mediumTimeFormat = "";
219 result.shortTimeFormat = "";
220
221 result.fullDateFormat = "";
222 result.longDateFormat = "";
223 result.mediumDateFormat = "";
224 result.shortDateFormat = "";
225
226 // Used by DecimalFormatSymbols.
227 result.zeroDigit = '0';
228 result.decimalSeparator = '.';
229 result.groupingSeparator = ',';
230 result.patternSeparator = ' ';
231 result.percent = '%';
232 result.perMill = '\u2030';
233 result.monetarySeparator = ' ';
234 result.minusSign = '-';
235 result.exponentSeparator = "e";
236 result.infinity = "\u221E";
237 result.NaN = "NaN";
238 // Also used by Currency.
239 result.currencySymbol = "$";
240 result.internationalCurrencySymbol = "USD";
241
242 // Used by DecimalFormat and NumberFormat.
243 result.numberPattern = "%f";
244 result.integerPattern = "%d";
245 result.currencyPattern = "%s";
246 result.percentPattern = "%f";
247
248 return true;
249 }
250}