00001 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). 00002 // All rights reserved. 00003 // This component and the accompanying materials are made available 00004 // under the terms of "Eclipse Public License v1.0" 00005 // which accompanies this distribution, and is available 00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html". 00007 // 00008 // Initial Contributors: 00009 // Nokia Corporation - initial contribution. 00010 // 00011 // Contributors: 00012 // 00013 // Description: 00014 // Contains the definition of functions defined in the CLocaleSettings class. 00015 // It also contains the definition of the DoStartL()function. 00016 // This function displays a number of locale settings for a variety of locale DLLs. 00017 // 00018 00019 00020 00024 #include "localeupdate.h" 00025 00026 LOCAL_D CConsoleBase* console; 00027 00028 LOCAL_C void DoStartL(); 00029 00030 LOCAL_C void CallExampleL(); 00031 00038 CLocaleSettings* CLocaleSettings::NewL(TDesC16& aLocaleDLLName, CConsoleBase* aConsole) 00039 { 00040 CLocaleSettings* self = new (ELeave) CLocaleSettings; 00041 CleanupStack::PushL(self); 00042 self->ConstructL(aLocaleDLLName, aConsole); 00043 CleanupStack::Pop(self); 00044 return self; 00045 } 00046 00053 void CLocaleSettings::ConstructL(TDesC16& aLocaleDLLName, CConsoleBase* aConsole) 00054 { 00055 // Store the name of the locale DLL. 00056 iLocaleDLLName.Copy(aLocaleDLLName); 00057 iConsole = aConsole; 00058 00059 // Load the locale DLL. 00060 User::LeaveIfError(iExtendedLocale.LoadLocale(iLocaleDLLName)); 00061 00062 // Get the TLocale object from TExtendedLocale. 00063 iLocale = iExtendedLocale.GetLocale(); 00064 00065 // Get the first day of the week. 00066 // Monday is enumerated to 0, Tuesday to 1 and so on. 00067 iStartOfWeek = iLocale->StartOfWeek(); 00068 00069 // Get the working days mask. 00070 // Least significant bit corresponds to Monday. 00071 // A bit is set if it is a working day. 00072 iWorkingDaysMask = iLocale->WorkDays(); 00073 00074 // Get the collation method for the locale. 00075 iCollationMethod = iExtendedLocale.GetPreferredCollationMethod(); 00076 00077 // Get the country code. 00078 iCountryCode = iLocale->CountryCode(); 00079 00080 // Get the date format. 00081 iDateFormat = iLocale->DateFormat(); 00082 00083 // Get the time format. 00084 iTimeFormat = iLocale->TimeFormat(); 00085 00086 // Get numeric value settings. 00087 iThousandsSeparator = iLocale->ThousandsSeparator(); 00088 iDecimalSeparator = iLocale->DecimalSeparator(); 00089 00090 // Get the units of measurement. 00091 iUnitsFormat = iLocale->UnitsGeneral(); 00092 00093 // Get the time zone information. 00094 // A locale's time zone is defined as an offset from UTC. 00095 iUTCOffset = User::UTCOffset(); 00096 } 00097 00101 CLocaleSettings::CLocaleSettings() 00102 { 00103 } 00104 00108 void CLocaleSettings::DisplayLocaleSettings() 00109 { 00110 // Print the name of the locale DLL. 00111 _LIT(KTextDLLName, "\r\nLocale Settings for the DLL:"); 00112 console->Printf(KTextDLLName); 00113 console->Printf(iLocaleDLLName); 00114 console->Printf(KTextNewLine); 00115 00116 // Print the calendar settings. 00117 _LIT(KTextCalenderSettings, "Calendar Settings:\r\n1. First day of the week: %d\r\n"); 00118 iConsole->Printf(KTextCalenderSettings, iStartOfWeek); 00119 00120 // Print the mask. 00121 _LIT(KTextWorkingDays, "2. Working days of the week [LSB - Monday]: %07b\r\n"); 00122 iConsole->Printf(KTextWorkingDays, iWorkingDaysMask); 00123 00124 // Print the collation method. 00125 _LIT(KTextCollationMethod, "Collation method:"); 00126 iConsole->Printf(KTextCollationMethod); 00127 if(iCollationMethod.iFlags & TCollationMethod::EIgnoreNone) 00128 { 00129 _LIT(KTextIgnoreNone, "IgnoreNone\r\n"); 00130 iConsole->Printf(KTextIgnoreNone); 00131 } 00132 else if(iCollationMethod.iFlags & TCollationMethod::ESwapCase) 00133 { 00134 _LIT(KTextSwapCase, "SwapCase\r\n"); 00135 iConsole->Printf(KTextSwapCase); 00136 } 00137 else if(iCollationMethod.iFlags & TCollationMethod::EAccentsBackwards) 00138 { 00139 _LIT(KTextAccents, "AccentsBackwards\r\n"); 00140 iConsole->Printf(KTextAccents); 00141 } 00142 else if(iCollationMethod.iFlags & TCollationMethod::ESwapKana) 00143 { 00144 _LIT(KTextSwapKana, "SwapKana\r\n"); 00145 iConsole->Printf(KTextSwapKana); 00146 } 00147 else if(iCollationMethod.iFlags & TCollationMethod::EFoldCase) 00148 { 00149 _LIT(KTextFoldCase, "FoldCase\r\n"); 00150 iConsole->Printf(KTextFoldCase); 00151 } 00152 else 00153 { 00154 _LIT(KTextStandard, "Standard\r\n"); 00155 iConsole->Printf(KTextStandard); 00156 } 00157 00158 // Print the country code. 00159 _LIT(KTextCountryCode, "Country code: %d\r\n"); 00160 iConsole->Printf(KTextCountryCode, iCountryCode); 00161 00162 // Get the currency format. 00163 TBuf<50> currency; 00164 // A value for the currency. 00165 TInt currencyValue = 10241024; 00166 iLocale->FormatCurrency(currency, currencyValue); 00167 // Print the currency format. 00168 _LIT(KTextCurrencyFormat, "Currency format of %d:"); 00169 iConsole->Printf(KTextCurrencyFormat, currencyValue); 00170 iConsole->Printf(currency); 00171 iConsole->Printf(KTextNewLine); 00172 00173 // Print the date format. 00174 _LIT(KTextDateFormat, "Date Format: "); 00175 iConsole->Printf(KTextDateFormat); 00176 switch(iDateFormat) 00177 { 00178 case EDateAmerican: 00179 _LIT(KTextUSFormat, "US Format (mm/dd/yy)\r\n"); 00180 iConsole->Printf(KTextUSFormat); 00181 break; 00182 case EDateEuropean: 00183 _LIT(KTextEuropeanFormat, "European format (dd/mm/yyyy)\r\n"); 00184 iConsole->Printf(KTextEuropeanFormat); 00185 break; 00186 case EDateJapanese: 00187 _LIT(KTextJapFormat, "Japanese format (yyyy/mm/dd)\r\n"); 00188 iConsole->Printf(KTextJapFormat); 00189 break; 00190 } 00191 00192 // Print the time format. 00193 _LIT(KTextTimeFormat, "Time Format: "); 00194 iConsole->Printf(KTextTimeFormat); 00195 if(iTimeFormat == ETime12) 00196 { 00197 _LIT(KText12Hour, "12 hour format\r\n"); 00198 iConsole->Printf(KText12Hour); 00199 } 00200 else 00201 { 00202 _LIT(KText24Hour, "24 hour format\r\n"); 00203 iConsole->Printf(KText24Hour); 00204 } 00205 00206 // Print the numeric value settings. 00207 _LIT(KTextNumericValues, "Numeric Values: \r\n"); 00208 iConsole->Printf(KTextNumericValues); 00209 _LIT(KTextThousandsSeparator, "\tThousands separator: %c\r\n"); 00210 iConsole->Printf(KTextThousandsSeparator, TUint(iThousandsSeparator)); 00211 _LIT(KTextDecimalSeparator, "\tDecimal separator: %c\r\n"); 00212 iConsole->Printf(KTextDecimalSeparator, TUint(iDecimalSeparator)); 00213 00214 // Print the time zone information. 00215 _LIT(KTextTimeZone, "UTC Offset in seconds (Time Zone Information): %d\r\n"); 00216 iConsole->Printf(KTextTimeZone, iUTCOffset.Int()); 00217 00218 // Print the units of measurement. 00219 _LIT(KTextUnitsOfMeasure, "Units of measurement: "); 00220 iConsole->Printf(KTextUnitsOfMeasure); 00221 if(iUnitsFormat == EUnitsImperial) 00222 { 00223 _LIT(KTextImperial, "Imperial\r\n"); 00224 iConsole->Printf(KTextImperial); 00225 } 00226 else 00227 { 00228 _LIT(KTextMetric, "Metric\r\n"); 00229 iConsole->Printf(KTextMetric); 00230 } 00231 } 00232 00236 CLocaleSettings::~CLocaleSettings() 00237 { 00238 } 00239 00240 LOCAL_C void DoStartL() 00241 { 00242 // UK English locale DLL. 00243 _LIT(KLocaleName1, "elocl.01"); 00244 TBufC<KLength> localeName1(KLocaleName1); 00245 // Create a CLocaleSettings object for the locale DLL eloc1.01. 00246 CLocaleSettings* obj = CLocaleSettings::NewL(localeName1, console); 00247 CleanupStack::PushL(obj); 00248 // Display the locale settings for the locale DLL eloc1.01. 00249 obj->DisplayLocaleSettings(); 00250 // Delete the CLocaleSettings object. 00251 CleanupStack::PopAndDestroy(obj); 00252 // Wait for a key press. 00253 console->Printf(KTextPressAnyKey); 00254 console->Getch(); 00255 00256 // American locale DLL. 00257 _LIT(KLocaleName2, "elocl.10"); 00258 TBufC<KLength> localeName2(KLocaleName2); 00259 // Create a CLocaleSettings object for the locale DLL eloc1.10. 00260 obj = CLocaleSettings::NewL(localeName2, console); 00261 CleanupStack::PushL(obj); 00262 // Display the locale settings for the locale DLL eloc1.10. 00263 obj->DisplayLocaleSettings(); 00264 // Delete the CLocaleSettings object. 00265 CleanupStack::PopAndDestroy(obj); 00266 // Wait for a key press. 00267 console->Printf(KTextPressAnyKey); 00268 console->Getch(); 00269 00270 // Taiwanese Chinese locale DLL. 00271 _LIT(KLocaleName3, "elocl.29"); 00272 TBufC<KLength> localeName3(KLocaleName3); 00273 // Create a CLocaleSettings object for the locale DLL eloc1.29. 00274 obj = CLocaleSettings::NewL(localeName3, console); 00275 CleanupStack::PushL(obj); 00276 // Display the locale settings for the locale DLL eloc1.29. 00277 obj->DisplayLocaleSettings(); 00278 // Delete the CLocaleSettings object. 00279 CleanupStack::PopAndDestroy(obj); 00280 // Wait for a key press. 00281 console->Printf(KTextPressAnyKey); 00282 console->Getch(); 00283 00284 // Japanese locale DLL. 00285 _LIT(KLocaleName4, "elocl.32"); 00286 TBufC<KLength> localeName4(KLocaleName4); 00287 // Create a CLocaleSettings object for the locale DLL eloc1.32. 00288 obj = CLocaleSettings::NewL(localeName4, console); 00289 CleanupStack::PushL(obj); 00290 // Display the locale settings for the locale DLL eloc1.32. 00291 obj->DisplayLocaleSettings(); 00292 // Delete the CLocaleSettings object. 00293 CleanupStack::PopAndDestroy(obj); 00294 } 00295 00296 GLDEF_C TInt E32Main() // main function called by E32 00297 { 00298 __UHEAP_MARK; 00299 CTrapCleanup* cleanup=CTrapCleanup::New(); // get clean-up stack 00300 TRAPD(error, CallExampleL()); // more initialization, then do example 00301 delete cleanup; // destroy clean-up stack 00302 __ASSERT_ALWAYS(!error, User::Panic(KTxtEPOC32EX, error)); 00303 __UHEAP_MARKEND; 00304 return 0; // and return 00305 } 00306 00307 LOCAL_C void CallExampleL() // initialize and call example code under cleanup stack 00308 { 00309 console=Console::NewL(KTxtExampleCode, TSize(KConsFullScreen, KConsFullScreen)); 00310 CleanupStack::PushL(console); 00311 TRAPD(error, DoStartL()); // perform example function 00312 if (error) 00313 console->Printf(KFormatFailed, error); 00314 else 00315 console->Printf(KTxtOK); 00316 console->Printf(KTextPressAnyKey); 00317 console->Getch(); // get and ignore character 00318 CleanupStack::PopAndDestroy(); // close console 00319 }
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.