calendarui/regionalplugins/calenregionalutil/src/calenlunarlocalizer.cpp
changeset 45 b6db4fd4947b
parent 23 fd30d51f876b
child 55 2c54b51f39c4
--- a/calendarui/regionalplugins/calenregionalutil/src/calenlunarlocalizer.cpp	Mon May 03 12:30:32 2010 +0300
+++ b/calendarui/regionalplugins/calenregionalutil/src/calenlunarlocalizer.cpp	Mon Jun 28 15:22:02 2010 +0530
@@ -17,17 +17,16 @@
 
 
 
-
+#include <qdatetime.h>
+#include <qstringlist.h>
+#include <hbi18ndef.h>
+#include <hbglobal.h>
 
-#include <avkon.rsg>
 #include <badesca.h> 
 #include <eikenv.h>
-#include <StringLoader.h>
 #include <bautils.h>
 #include <data_caging_path_literals.hrh>
 
-#include <calenregionalutil.rsg>
-
 #include "calendarui_debug.h"
 
 #include "CalenLunarLocalizer.h"
@@ -43,8 +42,6 @@
 _LIT(KChineseDigits, 
      "\x0030\x4e00\x4e8c\x4e09\x56db\x4e94\x516d\x4e03\x516b\x4e5d");
 
-_LIT( KResourceChinesePluginFile, "calenregionalutil.rsc" );
-#define KResourcePath KDC_RESOURCE_FILES_DIR
 
 
 // -----------------------------------------------------------------------------
@@ -72,18 +69,7 @@
     {
     TRACE_ENTRY_POINT;
     
-    delete iFestivalNames;
-    delete iSolarTermNames;
-    delete iHeavenlyStemNames;
-    delete iTerrestialBranchNames;
-    delete iAnimalYearNames;
-    delete iGregorianDateFormat;
     delete iRowFormatter;
-    
-    if( iResourceFileOffset )
-        {
-        CCoeEnv::Static()->DeleteResourceFile( iResourceFileOffset );
-        }
     TRACE_EXIT_POINT;
     }
 
@@ -102,98 +88,133 @@
 // -----------------------------------------------------------------------------
 //
 EXPORT_C void CCalenLunarLocalizer::ConstructL()
-    {
-    TRACE_ENTRY_POINT;
-    
-    iRowFormatter = CCalenExtraRowFormatter::NewL();
-    
-    TFileName dllName;
-    // Get the complate path of the DLL from where it is currently loaded
-    Dll::FileName( dllName );
-    
-    TFileName resourceFilename;
-    resourceFilename.Append(dllName.Mid(0,2));
-    resourceFilename.Append(KResourcePath);
-    resourceFilename.Append(KResourceChinesePluginFile);
-    BaflUtils::NearestLanguageFile( CEikonEnv::Static()->FsSession(), resourceFilename );
-    // Add the resource file.
-    iResourceFileOffset = CEikonEnv::Static()->AddResourceFileL( resourceFilename );
+{
+	iRowFormatter = CCalenExtraRowFormatter::NewL();
+
+	iFestivalNames.append(hbTrId("txt_calendar_preview_title_spring_fest"));
+	iFestivalNames.append(hbTrId("txt_calendar_preview_title_lantern_fest"));
+	iFestivalNames.append(hbTrId("txt_calendar_preview_title_dragon_fest"));
+	iFestivalNames.append(hbTrId("txt_calendar_preview_title_seventh_night_fest"));
+	iFestivalNames.append(hbTrId("txt_calendar_preview_title_ghost_fest"));
+	iFestivalNames.append(hbTrId("txt_calendar_preview_title_mid_autumn_fest"));
+	iFestivalNames.append(hbTrId("txt_calendar_preview_title_double_fest"));
+	iFestivalNames.append(hbTrId("txt_calendar_preview_title_eigth_day_fest"));
+	iFestivalNames.append(hbTrId("txt_calendar_preview_title_new_year_fest"));
+
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_li_chun"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_yu_shui"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_jing_zhe"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_chun_fen"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_qing_ming"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_gu_yu"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_li_xia"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_xiao_man"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_mang_zhong"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_xia_zhi"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_xiao_shu"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_da_shu"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_li_qiu"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_chu_shu"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_bai_lu"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_qiu_fen"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_han_lu"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_shaung_jiang"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_li_dong"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_xiao_xue"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_da_xue"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_dong_zhi"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_xiao_han"));
+	iSolarTermNames.append(hbTrId("txt_calendar_preview_title_da_han"));
 
-    iFestivalNames = iEikEnv->ReadDesCArrayResourceL(R_CALEN_CHI_FESTIVALS);
-    iSolarTermNames = iEikEnv->ReadDesCArrayResourceL(R_CALEN_CHI_SOLAR_ITEMS);
-    iHeavenlyStemNames = iEikEnv->ReadDesCArrayResourceL(R_CALEN_CHI_HEAV_STEMS);
-    iTerrestialBranchNames = iEikEnv->ReadDesCArrayResourceL(R_CALEN_CHI_TERR_BRANCHES);
-    iAnimalYearNames = iEikEnv->ReadDesCArrayResourceL(R_CALEN_CHI_ANIMAL_YEARS);
+	iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_jia"));
+	iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_yi"));
+	iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_bing"));
+	iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_ding"));
+	iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_wu"));
+	iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_ji"));
+	iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_geng"));
+	iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_xing"));
+	iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_reng"));
+	iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_gui"));
 
-    iGregorianDateFormat = StringLoader::LoadL(R_QTN_DATE_USUAL_WITH_ZERO);
+	iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_zi"));
+	iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_chou"));
+	iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_yin"));
+	iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_mao"));
+	iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_chen"));
+	iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_si"));
+	iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_wu"));
+	iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_wei"));
+	iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_shen"));
+	iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_you"));
+	iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_xu"));
+	iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_hai"));
 
-    
-    TRACE_EXIT_POINT;
-    }
+	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_rat"));
+	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_ox"));
+	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_tiger"));
+	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_rabbit"));
+	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_dragon"));
+	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_snake"));
+	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_horse"));
+	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_sheep"));
+	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_monkey"));
+	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_rooster"));
+	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_dog"));
+	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_pig"));
+	
+}
 
 // -----------------------------------------------------------------------------
 // CCalenLunarLocalizer::LocalizeL
 // -----------------------------------------------------------------------------
 //
 EXPORT_C CCalenLunarLocalizedInfo* CCalenLunarLocalizer::LocalizeL( TCalenLunarInfo& aInfo )
-    {
-    TRACE_ENTRY_POINT;
-   
-    
-    CCalenLunarLocalizedInfo* localized = CCalenLunarLocalizedInfo::NewL();
-    CleanupStack::PushL( localized );
+{
+	CCalenLunarLocalizedInfo* localized = CCalenLunarLocalizedInfo::NewL();
+	CleanupStack::PushL( localized );
+
 
-    if ( aInfo.HasFestival() ) 
-        {
-        localized->iFestival.Set( iFestivalNames->MdcaPoint( aInfo.iFestival ) );
-        }
-    
-    if ( aInfo.HasSolarTerm() ) 
-        {
-        localized->iSolarTerm.Set( iSolarTermNames->MdcaPoint( aInfo.iSolarTerm ) );
-        }
+	if ( aInfo.HasFestival() ) 
+	{
+		QString festival = iFestivalNames.at(aInfo.iFestival);
+		localized->iFestival.Set( static_cast<const TUint16*>(festival.utf16()),festival.length());
+	}
 
-    // Animal year
-    localized->iAnimalYear.Set( iAnimalYearNames->MdcaPoint( aInfo.AnimalYear() ) );
-    
+	if ( aInfo.HasSolarTerm() ) 
+	{
+		QString solarTerm = iSolarTermNames.at(aInfo.iSolarTerm);
+		localized->iSolarTerm.Set( static_cast<const TUint16*>(solarTerm.utf16()),solarTerm.length());
+	}
 
-    // Lunar year    
-    CPtrCArray* yearSubs = new (ELeave) CPtrCArray(2);
-    CleanupStack::PushL( yearSubs );
-    yearSubs->AppendL( iHeavenlyStemNames->MdcaPoint( aInfo.iHeavenlyStem ) );
-    yearSubs->AppendL( iTerrestialBranchNames->MdcaPoint( aInfo.iTerrestialBranch ) );
+	// Animal year
+	QString animalYear = iAnimalYearNames.at(aInfo.AnimalYear());
+	localized->iAnimalYear.Set( static_cast<const TUint16*>(animalYear.utf16()),animalYear.length());
 
-    HBufC* tmp = StringLoader::LoadLC( R_CALE_LUNAR_YEAR, *yearSubs);
-    RDebug::Print( *tmp );
-    localized->iLunarYear = *tmp;
-    CleanupStack::PopAndDestroy( tmp );
-    CleanupStack::PopAndDestroy( yearSubs );
+	// Lunar year
+	QString heavenlyStemNames = iHeavenlyStemNames.at(aInfo.iHeavenlyStem);
+	QString terrestialBranchNames = iTerrestialBranchNames.at(aInfo.iTerrestialBranch);
+	QString lunarYear = hbTrId("txt_calendar_info_lunar_year").arg(heavenlyStemNames).arg(terrestialBranchNames);
+	localized->iLunarYear = static_cast<const TUint16*> (lunarYear.utf16()), lunarYear.length();
 
-    RDebug::Print( localized->iLunarYear );
+	LocalizeMonthAndDayL(localized, aInfo);
 
-    LocalizeMonthAndDayL(localized, aInfo);
-    
-    // Full lunar date
-    CPtrCArray* subs = new (ELeave) CPtrCArray(2);
-    CleanupStack::PushL( subs );
-    subs->AppendL( localized->LunarMonthAndDay() );
-    subs->AppendL( localized->LunarYear() );
-    
-    tmp = StringLoader::LoadLC( R_CALE_LUNAR_FULL_DATE, *subs );
-    localized->iFullLunarDate = *tmp;
-    CleanupStack::PopAndDestroy( tmp );
-    CleanupStack::PopAndDestroy( subs );
-    
-    
-    aInfo.iGregorianDate.FormatL( localized->iGregorianDate, 
-                                 *iGregorianDateFormat );
-    CleanupStack::Pop( localized );
-    
-    
-    
-    TRACE_EXIT_POINT;
-    return localized;
-    }
+	QString monthAndDay = QString::fromUtf16(localized->LunarMonthAndDay().Ptr(),localized->LunarMonthAndDay().Length());
+	QString yearString = QString::fromUtf16(localized->LunarYear().Ptr(),localized->LunarYear().Length());
+	QString fullLunarDate = hbTrId("txt_calendar_info_lunar_full_date").arg(monthAndDay).arg(yearString);
+	
+	localized->iFullLunarDate = static_cast<const TUint16*> (fullLunarDate.utf16()), fullLunarDate.length();
+
+	QString format(r_qtn_date_usual_with_zero);
+	TBuf<100> gregFormatBuf;
+	gregFormatBuf = static_cast<const TUint16*> (format.utf16()), format.length();
+	
+	aInfo.iGregorianDate.FormatL( localized->iGregorianDate, gregFormatBuf );
+
+	CleanupStack::Pop( localized );
+	
+	return localized;
+}
 
 
 // -----------------------------------------------------------------------------
@@ -227,24 +248,27 @@
 //
 void CCalenLunarLocalizer::LocalizeMonthAndDayL(CCalenLunarLocalizedInfo* aLocInfo,
                                                 TCalenLunarInfo& aInfo)
-    {
-    // Lunar Month and Day
-    TInt dateResource = aInfo.iLunarDate.iLeapMonth ? R_CALE_LUNAR_LEAP_DATE : R_CALE_LUNAR_DATE;
-    TBuf<10> month;
-    TBuf<10> day;
-    GetChineseMonth(aInfo.iLunarDate, month);
-    GetChineseDay(aInfo.iLunarDate, day);
+{
+	TBuf<10> month;
+	TBuf<10> day;
+	GetChineseMonth(aInfo.iLunarDate, month);
+	GetChineseDay(aInfo.iLunarDate, day);
 
-    CPtrCArray* monthAndDaySubs = new (ELeave) CPtrCArray(2);
-    CleanupStack::PushL( monthAndDaySubs );
-    monthAndDaySubs->AppendL(month);
-    monthAndDaySubs->AppendL(day);
-    
-    HBufC* tmp = StringLoader::LoadLC( dateResource, *monthAndDaySubs );
-    aLocInfo->iLunarMonthAndDay = *tmp;
-    CleanupStack::PopAndDestroy( tmp );
-    CleanupStack::PopAndDestroy( monthAndDaySubs );
-    }
+	QString formattedString;
+	if(aInfo.iLunarDate.iLeapMonth) {
+		formattedString = hbTrId(
+						"txt_calendar_info_lunar_leap_date").arg(
+						QString((QChar*)month.Ptr(),month.Length())).arg(
+						QString((QChar*)day.Ptr(),day.Length()));
+	}else {
+		formattedString = hbTrId(
+						"txt_calendar_info_lunar_date").arg(
+						QString((QChar*)month.Ptr(),month.Length())).arg(
+						QString((QChar*)day.Ptr(),day.Length()));
+	}
+	aLocInfo->iLunarMonthAndDay = static_cast<const TUint16*> (
+							formattedString.utf16()), formattedString.length();
+}
 
 // -----------------------------------------------------------------------------
 // CCalenLunarLocalizer::GetChineseMonth