javacommons/utils/src.s60/properties.cpp
branchRCL_3
changeset 24 0fd27995241b
parent 19 04becd199f91
child 64 0ea12c182930
equal deleted inserted replaced
20:f9bb0fca356a 24:0fd27995241b
     1 /*
     1 /*
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    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);
   130     {
   295     {
   131         platform = S60CommonUtils::NativeToJavaString(*aEnv,*propertyValue.get());
   296         platform = S60CommonUtils::NativeToJavaString(*aEnv,*propertyValue.get());
   132     }
   297     }
   133     return platform;
   298     return platform;
   134 }
   299 }
   135 
       
   136 #ifndef RD_JAVA_UI_QT
       
   137 
       
   138 HBufC* getS60LocaleTempImplL()
       
   139 {
       
   140     JELOG2(EUtils);
       
   141     _LIT(KFileName, "z:\\resource\\avkon.rsc");
       
   142     TFileName fileName(KFileName);
       
   143     RFs iRFs;
       
   144     CleanupClosePushL(iRFs);
       
   145     User::LeaveIfError(iRFs.Connect());
       
   146     BaflUtils::NearestLanguageFile(iRFs, fileName);
       
   147     RResourceFile resourceFile;
       
   148     CleanupClosePushL(resourceFile);
       
   149     resourceFile.OpenL(iRFs, fileName);
       
   150     resourceFile.ConfirmSignatureL(0);
       
   151     HBufC8* textBuf8 = resourceFile.AllocReadLC(R_QTN_LANGUAGE_RFC3066_TAG);
       
   152     const TPtrC16 ptrBuf8((TText16*) textBuf8->Ptr(), (textBuf8->Length() + 1) >> 1);
       
   153     HBufC16* tag = ptrBuf8.AllocL();
       
   154     CleanupStack::PopAndDestroy(3);
       
   155     return tag;
       
   156 
       
   157 }
       
   158 
       
   159 #endif // RD_JAVA_UI_QT
       
   160 
   300 
   161 HBufC* GetPlatformVersionL()
   301 HBufC* GetPlatformVersionL()
   162 {
   302 {
   163     VersionInfo::TPlatformVersion platformVersion;
   303     VersionInfo::TPlatformVersion platformVersion;
   164     User::LeaveIfError(VersionInfo::GetVersion(platformVersion));
   304     User::LeaveIfError(VersionInfo::GetVersion(platformVersion));