13 * |
13 * |
14 * Description: |
14 * Description: |
15 * |
15 * |
16 */ |
16 */ |
17 |
17 |
18 |
|
19 #include <memory> |
18 #include <memory> |
20 #include <jni.h> |
19 #include <jni.h> |
21 #include <f32file.h> |
20 #include <f32file.h> |
22 #include <sysversioninfo.h> |
21 #include <sysversioninfo.h> |
23 #include <versioninfo.h> |
22 #include <versioninfo.h> |
24 #include <sysutil.h> |
23 #include <sysutil.h> |
25 #include <hal.h> |
24 #include <hal.h> |
26 |
25 |
27 #ifdef RD_JAVA_UI_QT |
|
28 |
|
29 #include <QLocale> |
|
30 |
|
31 #else // RD_JAVA_UI_QT |
|
32 |
|
33 #include <bautils.h> |
|
34 #include <barsc.h> |
|
35 #include <avkon.rsg> |
|
36 #include <AknUtils.h> |
|
37 |
|
38 #endif // RD_JAVA_UI_QT |
|
39 |
|
40 #include "javaenvinfo.h" |
26 #include "javaenvinfo.h" |
41 #include "commonproperties.h" |
27 #include "commonproperties.h" |
42 #include "javacommonutils.h" |
28 #include "javacommonutils.h" |
43 #include "exceptionbase.h" |
29 #include "exceptionbase.h" |
44 #include "logger.h" |
30 #include "logger.h" |
45 #include "s60commonutils.h" |
31 #include "s60commonutils.h" |
46 |
32 |
47 using namespace java::util; |
33 using namespace java::util; |
48 |
34 |
49 jstring getS60LocaleL(JNIEnv* env); |
|
50 |
|
51 #ifndef RD_JAVA_UI_QT |
|
52 |
|
53 HBufC* getS60LocaleTempImplL(); |
|
54 |
|
55 #endif // RD_JAVA_UI_QT |
|
56 |
|
57 HBufC* MicroEditionPlatformL(); |
35 HBufC* MicroEditionPlatformL(); |
58 TInt getHardwareVersionL(TDes& aHardwareType); |
36 TInt getHardwareVersionL(TDes& aHardwareType); |
59 |
37 |
60 const TUint KBufferSize = 32; |
38 const TUint KBufferSize = 32; |
61 _LIT(KMicroeditionPlatform, "S60"); |
39 _LIT(KMicroeditionPlatform, "S60"); |
62 _LIT(KMicroeditionPlatformValueDefaultPrefix, "Series60"); |
40 _LIT(KMicroeditionPlatformValueDefaultPrefix, "Series60"); |
63 _LIT(KMicroeditionPlatformName, "sw_platform="); |
41 _LIT(KMicroeditionPlatformName, "sw_platform="); |
64 _LIT(KMicroeditionPlatformVersion, "sw_platform_version="); |
42 _LIT(KMicroeditionPlatformVersion, "sw_platform_version="); |
65 _LIT(KMicroeditionPlatformJavaVersion, "java_build_version="); |
43 _LIT(KMicroeditionPlatformJavaVersion, "java_build_version="); |
66 |
44 |
|
45 _LIT(KMicroeditionLocaleAfrikaans, "af-ZA"); |
|
46 _LIT(KMicroeditionLocaleAlbanian, "sq-SQ"); |
|
47 _LIT(KMicroeditionLocaleArabic, "ar"); |
|
48 _LIT(KMicroeditionLocaleBasque, "eu"); |
|
49 _LIT(KMicroeditionLocaleIndonesian, "id-ID"); |
|
50 _LIT(KMicroeditionLocaleMalay, "ms-MY"); |
|
51 _LIT(KMicroeditionLocaleBulgarian, "bg-BG"); |
|
52 _LIT(KMicroeditionLocaleCatalan, "ca"); |
|
53 _LIT(KMicroeditionLocalePrcChinese, "zh-CN"); |
|
54 _LIT(KMicroeditionLocaleHongKongChinese, "zh-HK"); |
|
55 _LIT(KMicroeditionLocaleTaiwanChinese, "zh-TW"); |
|
56 _LIT(KMicroeditionLocaleCroatian, "hr-HR"); |
|
57 _LIT(KMicroeditionLocaleCzech, "cs-CZ"); |
|
58 _LIT(KMicroeditionLocaleDanish, "da-DK"); |
|
59 _LIT(KMicroeditionLocaleDutch, "nl-NL"); |
|
60 _LIT(KMicroeditionLocaleEnglish, "en"); |
|
61 _LIT(KMicroeditionLocaleAmerican, "en-US"); |
|
62 _LIT(KMicroeditionLocaleEstonian, "et-EE"); |
|
63 _LIT(KMicroeditionLocaleFarsi, "fa"); |
|
64 _LIT(KMicroeditionLocaleFinnish, "fi-FI"); |
|
65 _LIT(KMicroeditionLocaleFrench, "fr"); |
|
66 _LIT(KMicroeditionLocaleCanadianFrench, "fr-CA"); |
|
67 _LIT(KMicroeditionLocaleGalician, "gl"); |
|
68 _LIT(KMicroeditionLocaleGerman, "de"); |
|
69 _LIT(KMicroeditionLocaleGreek, "el-GR"); |
|
70 _LIT(KMicroeditionLocaleHebrew, "he-IL"); |
|
71 _LIT(KMicroeditionLocaleHindi, "hi-IN"); |
|
72 _LIT(KMicroeditionLocaleMarathi, "mr-IN"); |
|
73 _LIT(KMicroeditionLocaleHungarian, "hu-HU"); |
|
74 _LIT(KMicroeditionLocaleIcelandic, "is-IS"); |
|
75 _LIT(KMicroeditionLocaleItalian, "it"); |
|
76 _LIT(KMicroeditionLocaleJapanese, "ja-JP"); |
|
77 _LIT(KMicroeditionLocaleKorean, "ko-KR"); |
|
78 _LIT(KMicroeditionLocaleLatvian, "lv-LV"); |
|
79 _LIT(KMicroeditionLocaleLithuanian, "lt-LT"); |
|
80 _LIT(KMicroeditionLocaleNorwegian, "no-NO"); |
|
81 _LIT(KMicroeditionLocalePolish, "pl-PL"); |
|
82 _LIT(KMicroeditionLocalePortuguese, "pt-PT"); |
|
83 _LIT(KMicroeditionLocaleBrazilianPortuguese, "pt-BR"); |
|
84 _LIT(KMicroeditionLocaleRomanian, "ro-RO"); |
|
85 _LIT(KMicroeditionLocaleRussian, "ru-RU"); |
|
86 _LIT(KMicroeditionLocaleSerbian, "sr-YU"); |
|
87 _LIT(KMicroeditionLocaleSlovak, "sk-SK"); |
|
88 _LIT(KMicroeditionLocaleSlovenian, "sl-SI"); |
|
89 _LIT(KMicroeditionLocaleSpanish, "es-ES"); |
|
90 _LIT(KMicroeditionLocaleLatinAmericanSpanish, "es-US"); |
|
91 _LIT(KMicroeditionLocaleSwahili, "sw"); |
|
92 _LIT(KMicroeditionLocaleSwedish, "sv"); |
|
93 _LIT(KMicroeditionLocaleTagalog, "tl-PH"); |
|
94 _LIT(KMicroeditionLocaleThai, "th-TH"); |
|
95 _LIT(KMicroeditionLocaleTurkish, "tr-TR"); |
|
96 _LIT(KMicroeditionLocaleUkrainian, "uk-UA"); |
|
97 _LIT(KMicroeditionLocaleUrdu, "ur"); |
|
98 _LIT(KMicroeditionLocaleVietnamese, "vi-VN"); |
|
99 _LIT(KMicroeditionLocaleZulu, "zu"); |
|
100 |
67 jstring java::util::getLocaleImpl(JNIEnv* env) |
101 jstring java::util::getLocaleImpl(JNIEnv* env) |
68 { |
102 { |
69 JELOG2(EUtils); |
103 JELOG2(EUtils); |
70 |
104 |
71 #ifdef RD_JAVA_UI_QT |
105 // microedition.locale |
72 |
106 switch (User::Language()) { |
73 QString localeName = QLocale::system().name(); |
107 case ELangAfrikaans: |
74 |
108 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleAfrikaans); |
75 jstring loc = env->NewString(localeName.utf16(), localeName.size()); |
109 case ELangAlbanian: |
76 if (!loc) |
110 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleAlbanian); |
77 { |
111 |
78 std::bad_alloc(); |
112 case ELangArabic: |
79 } |
113 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleArabic); |
80 return loc; |
114 |
81 |
115 #if defined (__S60_50__) |
82 #else // RD_JAVA_UI_QT |
116 case 327: // Indonesian in Asia-Pacific regions = 327 |
83 jstring loc = 0; |
117 #else |
84 HBufC* buf = 0; |
118 case ELangIndonesian_Apac: |
85 bool usingTempSolution = false; |
119 #endif |
86 TRAPD(err, buf = AknLangUtils::DisplayLanguageTagL()); |
120 |
87 if (buf == 0 && err == KErrNotSupported) |
121 case ELangIndonesian: |
88 { |
122 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleIndonesian); |
89 //At the moment DisplayLanguageTagL must be called from |
123 |
90 //UI thread. Once this is fixed by the Avkon, we must |
124 case ELangMalay_Apac: |
91 //use temporary solution. |
125 case ELangMalay: |
92 usingTempSolution = true; |
126 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleMalay); |
93 TRAP(err, buf = getS60LocaleTempImplL()); |
127 |
94 } |
128 case ELangBasque: |
95 if (buf == 0) |
129 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleBasque); |
96 { |
130 |
97 std::string errorStr = "Could not solve locale when using "; |
131 case ELangBulgarian: |
98 if (usingTempSolution) |
132 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleBulgarian); |
99 { |
133 |
100 errorStr.append("temp"); |
134 case ELangCatalan: |
101 } |
135 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleCatalan); |
102 else |
136 |
103 { |
137 case ELangPrcChinese: |
104 errorStr.append("original"); |
138 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocalePrcChinese); |
105 } |
139 |
106 errorStr.append(" solution. Leave code = "); |
140 case ELangHongKongChinese: |
107 errorStr.append(JavaCommonUtils::intToString(err)); |
141 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleHongKongChinese); |
108 throw ExceptionBase(errorStr, |
142 |
109 __FILE__,__FUNCTION__,__LINE__); |
143 case ELangTaiwanChinese: |
110 } |
144 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleTaiwanChinese); |
111 const jchar* stringPtr = buf->Ptr(); |
145 |
112 const jsize stringLength = buf->Length(); |
146 case ELangCroatian: |
113 loc = env->NewString(stringPtr, stringLength); |
147 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleCroatian); |
114 delete buf; |
148 |
115 return loc; |
149 case ELangCzech: |
116 |
150 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleCzech); |
117 #endif // RD_JAVA_UI_QT |
151 |
|
152 case ELangDanish: |
|
153 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleDanish); |
|
154 |
|
155 case ELangDutch: |
|
156 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleDutch); |
|
157 |
|
158 case ELangEnglish: |
|
159 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleEnglish); |
|
160 |
|
161 case ELangAmerican: |
|
162 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleAmerican); |
|
163 |
|
164 case ELangEstonian: |
|
165 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleEstonian); |
|
166 |
|
167 case ELangFarsi: |
|
168 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleFarsi); |
|
169 |
|
170 case ELangFinnish: |
|
171 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleFinnish); |
|
172 |
|
173 case ELangFrench: |
|
174 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleFrench); |
|
175 |
|
176 case ELangCanadianFrench: |
|
177 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleCanadianFrench); |
|
178 |
|
179 case ELangGalician: |
|
180 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleGalician); |
|
181 |
|
182 case ELangGerman: |
|
183 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleGerman); |
|
184 |
|
185 case ELangGreek: |
|
186 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleGreek); |
|
187 |
|
188 case ELangHebrew: |
|
189 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleHebrew); |
|
190 |
|
191 case ELangHindi: |
|
192 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleHindi); |
|
193 |
|
194 case ELangHungarian: |
|
195 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleHungarian); |
|
196 |
|
197 case ELangIcelandic: |
|
198 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleIcelandic); |
|
199 |
|
200 case ELangItalian: |
|
201 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleItalian); |
|
202 |
|
203 case ELangJapanese: |
|
204 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleJapanese); |
|
205 |
|
206 case ELangKorean: |
|
207 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleKorean); |
|
208 |
|
209 case ELangLatvian: |
|
210 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleLatvian); |
|
211 |
|
212 case ELangLithuanian: |
|
213 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleLithuanian); |
|
214 |
|
215 case ELangMarathi: |
|
216 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleMarathi); |
|
217 |
|
218 case ELangNorwegian: |
|
219 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleNorwegian); |
|
220 |
|
221 case ELangPolish: |
|
222 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocalePolish); |
|
223 |
|
224 case ELangPortuguese: |
|
225 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocalePortuguese); |
|
226 |
|
227 case ELangBrazilianPortuguese: |
|
228 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleBrazilianPortuguese); |
|
229 |
|
230 case ELangRomanian: |
|
231 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleRomanian); |
|
232 |
|
233 case ELangRussian: |
|
234 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleRussian); |
|
235 |
|
236 case ELangSerbian: |
|
237 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleSerbian); |
|
238 |
|
239 case ELangSlovak: |
|
240 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleSlovak); |
|
241 |
|
242 case ELangSlovenian: |
|
243 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleSlovenian); |
|
244 |
|
245 case ELangSpanish: |
|
246 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleSpanish); |
|
247 |
|
248 case ELangLatinAmericanSpanish: |
|
249 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleLatinAmericanSpanish); |
|
250 |
|
251 case ELangSwahili: |
|
252 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleSwahili); |
|
253 |
|
254 case ELangSwedish: |
|
255 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleSwedish); |
|
256 |
|
257 case ELangTagalog: |
|
258 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleTagalog); |
|
259 |
|
260 case ELangThai: |
|
261 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleThai); |
|
262 |
|
263 case ELangTurkish: |
|
264 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleTurkish); |
|
265 |
|
266 case ELangUkrainian: |
|
267 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleUkrainian); |
|
268 |
|
269 case ELangUrdu: |
|
270 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleUrdu); |
|
271 |
|
272 case ELangVietnamese: |
|
273 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleVietnamese); |
|
274 |
|
275 case ELangZulu: |
|
276 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleZulu); |
|
277 } |
|
278 |
|
279 // According to MIDP2.0 spec the locale property, if not null, MUST |
|
280 // consist of the language and MAY optionally also contain the country |
|
281 // code, and variant separated by - |
|
282 return S60CommonUtils::NativeToJavaString(*env, KMicroeditionLocaleEnglish); |
118 } |
283 } |
119 |
284 |
120 jstring java::util::getPlatformImpl(JNIEnv* aEnv) |
285 jstring java::util::getPlatformImpl(JNIEnv* aEnv) |
121 { |
286 { |
122 JELOG2(EUtils); |
287 JELOG2(EUtils); |