calendarui/regionalplugins/calenregionalutil/src/calenlunarlocalizer.cpp
changeset 55 2c54b51f39c4
parent 45 b6db4fd4947b
child 75 7ac58b2aae6f
equal deleted inserted replaced
51:0b38fc5b94c6 55:2c54b51f39c4
    31 
    31 
    32 #include "CalenLunarLocalizer.h"
    32 #include "CalenLunarLocalizer.h"
    33 #include "CalenLunarInfo.h"
    33 #include "CalenLunarInfo.h"
    34 #include "CalenLunarLocalizedInfo.h"
    34 #include "CalenLunarLocalizedInfo.h"
    35 #include "CalenExtraRowFormatter.h"
    35 #include "CalenExtraRowFormatter.h"
       
    36 #include "OstTraceDefinitions.h"
       
    37 #ifdef OST_TRACE_COMPILER_IN_USE
       
    38 #include "calenlunarlocalizerTraces.h"
       
    39 #endif
       
    40 
    36 //CONSTANTS
    41 //CONSTANTS
    37 const TInt KCharMonth = 0x6708;
    42 const TInt KCharMonth = 0x6708;
    38 const TInt KCharFirstMonth = 0x6b63;
    43 const TInt KCharFirstMonth = 0x6b63;
    39 const TInt KCharChu = 0x521d;
    44 const TInt KCharChu = 0x521d;
    40 const TInt KCharTen = 0x5341;
    45 const TInt KCharTen = 0x5341;
    48 // CCalenLunarLocalizer::NewL
    53 // CCalenLunarLocalizer::NewL
    49 // -----------------------------------------------------------------------------
    54 // -----------------------------------------------------------------------------
    50 //
    55 //
    51 EXPORT_C CCalenLunarLocalizer* CCalenLunarLocalizer::NewL()
    56 EXPORT_C CCalenLunarLocalizer* CCalenLunarLocalizer::NewL()
    52     {
    57     {
    53     TRACE_ENTRY_POINT;
    58     OstTraceFunctionEntry0( CCALENLUNARLOCALIZER_NEWL_ENTRY );
    54     
       
    55     CCalenLunarLocalizer* self = new (ELeave) CCalenLunarLocalizer;
    59     CCalenLunarLocalizer* self = new (ELeave) CCalenLunarLocalizer;
    56     CleanupStack::PushL(self);
    60     CleanupStack::PushL(self);
    57     self->ConstructL();
    61     self->ConstructL();
    58     CleanupStack::Pop(self);
    62     CleanupStack::Pop(self);
    59     
    63     
    60     TRACE_EXIT_POINT;
    64     OstTraceFunctionExit0( CCALENLUNARLOCALIZER_NEWL_EXIT );
    61     return self;
    65     return self;
    62     }
    66     }
    63 
    67 
    64 // -----------------------------------------------------------------------------
    68 // -----------------------------------------------------------------------------
    65 // CCalenLunarLocalizer::~CCalenLunarLocalizer
    69 // CCalenLunarLocalizer::~CCalenLunarLocalizer
    66 // -----------------------------------------------------------------------------
    70 // -----------------------------------------------------------------------------
    67 //
    71 //
    68 EXPORT_C CCalenLunarLocalizer::~CCalenLunarLocalizer()
    72 EXPORT_C CCalenLunarLocalizer::~CCalenLunarLocalizer()
    69     {
    73     {
    70     TRACE_ENTRY_POINT;
    74     OstTraceFunctionEntry0( CCALENLUNARLOCALIZER_CCALENLUNARLOCALIZER_ENTRY );
    71     
       
    72     delete iRowFormatter;
    75     delete iRowFormatter;
    73     TRACE_EXIT_POINT;
    76     OstTraceFunctionExit0( CCALENLUNARLOCALIZER_CCALENLUNARLOCALIZER_EXIT );
    74     }
    77     }
    75 
    78 
    76 // -----------------------------------------------------------------------------
    79 // -----------------------------------------------------------------------------
    77 // CCalenLunarLocalizer::CCalenLunarLocalizer
    80 // CCalenLunarLocalizer::CCalenLunarLocalizer
    78 // -----------------------------------------------------------------------------
    81 // -----------------------------------------------------------------------------
    79 //
    82 //
    80 EXPORT_C CCalenLunarLocalizer::CCalenLunarLocalizer() : iEikEnv( CEikonEnv::Static() )
    83 EXPORT_C CCalenLunarLocalizer::CCalenLunarLocalizer() : iEikEnv( CEikonEnv::Static() )
    81     {
    84     {
    82     TRACE_ENTRY_POINT;
    85     OstTraceFunctionEntry0( DUP1_CCALENLUNARLOCALIZER_CCALENLUNARLOCALIZER_ENTRY );
    83     TRACE_EXIT_POINT;
    86     OstTraceFunctionExit0( DUP1_CCALENLUNARLOCALIZER_CCALENLUNARLOCALIZER_EXIT );
    84     }
    87     }
    85 
    88 
    86 // -----------------------------------------------------------------------------
    89 // -----------------------------------------------------------------------------
    87 // CCalenLunarLocalizer::ConstructL
    90 // CCalenLunarLocalizer::ConstructL
    88 // -----------------------------------------------------------------------------
    91 // -----------------------------------------------------------------------------
    89 //
    92 //
    90 EXPORT_C void CCalenLunarLocalizer::ConstructL()
    93 EXPORT_C void CCalenLunarLocalizer::ConstructL()
    91 {
    94 {
       
    95 	OstTraceFunctionEntry0( CCALENLUNARLOCALIZER_CONSTRUCTL_ENTRY );
    92 	iRowFormatter = CCalenExtraRowFormatter::NewL();
    96 	iRowFormatter = CCalenExtraRowFormatter::NewL();
    93 
    97 
    94 	iFestivalNames.append(hbTrId("txt_calendar_preview_title_spring_fest"));
    98 	iFestivalNames.append(hbTrId("txt_calendar_preview_title_spring_fest"));
    95 	iFestivalNames.append(hbTrId("txt_calendar_preview_title_lantern_fest"));
    99 	iFestivalNames.append(hbTrId("txt_calendar_preview_title_lantern_fest"));
    96 	iFestivalNames.append(hbTrId("txt_calendar_preview_title_dragon_fest"));
   100 	iFestivalNames.append(hbTrId("txt_calendar_preview_title_dragon_fest"));
   161 	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_monkey"));
   165 	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_monkey"));
   162 	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_rooster"));
   166 	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_rooster"));
   163 	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_dog"));
   167 	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_dog"));
   164 	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_pig"));
   168 	iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_pig"));
   165 	
   169 	
       
   170 	OstTraceFunctionExit0( CCALENLUNARLOCALIZER_CONSTRUCTL_EXIT );
   166 }
   171 }
   167 
   172 
   168 // -----------------------------------------------------------------------------
   173 // -----------------------------------------------------------------------------
   169 // CCalenLunarLocalizer::LocalizeL
   174 // CCalenLunarLocalizer::LocalizeL
   170 // -----------------------------------------------------------------------------
   175 // -----------------------------------------------------------------------------
   171 //
   176 //
   172 EXPORT_C CCalenLunarLocalizedInfo* CCalenLunarLocalizer::LocalizeL( TCalenLunarInfo& aInfo )
   177 EXPORT_C CCalenLunarLocalizedInfo* CCalenLunarLocalizer::LocalizeL( TCalenLunarInfo& aInfo )
   173 {
   178 {
       
   179 	OstTraceFunctionEntry0( CCALENLUNARLOCALIZER_LOCALIZEL_ENTRY );
   174 	CCalenLunarLocalizedInfo* localized = CCalenLunarLocalizedInfo::NewL();
   180 	CCalenLunarLocalizedInfo* localized = CCalenLunarLocalizedInfo::NewL();
   175 	CleanupStack::PushL( localized );
   181 	CleanupStack::PushL( localized );
   176 
   182 
   177 
   183 
   178 	if ( aInfo.HasFestival() ) 
   184 	if ( aInfo.HasFestival() ) 
   211 	
   217 	
   212 	aInfo.iGregorianDate.FormatL( localized->iGregorianDate, gregFormatBuf );
   218 	aInfo.iGregorianDate.FormatL( localized->iGregorianDate, gregFormatBuf );
   213 
   219 
   214 	CleanupStack::Pop( localized );
   220 	CleanupStack::Pop( localized );
   215 	
   221 	
       
   222 	OstTraceFunctionExit0( CCALENLUNARLOCALIZER_LOCALIZEL_EXIT );
   216 	return localized;
   223 	return localized;
   217 }
   224 }
   218 
   225 
   219 
   226 
   220 // -----------------------------------------------------------------------------
   227 // -----------------------------------------------------------------------------
   222 // -----------------------------------------------------------------------------
   229 // -----------------------------------------------------------------------------
   223 //
   230 //
   224 EXPORT_C TPtrC CCalenLunarLocalizer::GetExtraRowTextL( 
   231 EXPORT_C TPtrC CCalenLunarLocalizer::GetExtraRowTextL( 
   225 											CCalenLunarLocalizedInfo& aLocInfo )
   232 											CCalenLunarLocalizedInfo& aLocInfo )
   226     {
   233     {
   227     TRACE_ENTRY_POINT;
   234     OstTraceFunctionEntry0( CCALENLUNARLOCALIZER_GETEXTRAROWTEXTL_ENTRY );
   228     
       
   229     RArray<CCalenLunarLocalizedInfo::TField> fields;
   235     RArray<CCalenLunarLocalizedInfo::TField> fields;
   230     CleanupClosePushL( fields );
   236     CleanupClosePushL( fields );
   231     fields.AppendL( CCalenLunarLocalizedInfo::EFestival );
   237     fields.AppendL( CCalenLunarLocalizedInfo::EFestival );
   232     fields.AppendL( CCalenLunarLocalizedInfo::ESolarTerm );
   238     fields.AppendL( CCalenLunarLocalizedInfo::ESolarTerm );
   233     fields.AppendL( CCalenLunarLocalizedInfo::ELunarMonthAndDay );
   239     fields.AppendL( CCalenLunarLocalizedInfo::ELunarMonthAndDay );
   234     fields.AppendL( CCalenLunarLocalizedInfo::EAnimalYear );
   240     fields.AppendL( CCalenLunarLocalizedInfo::EAnimalYear );
   235     fields.AppendL( CCalenLunarLocalizedInfo::ELunarYear );
   241     fields.AppendL( CCalenLunarLocalizedInfo::ELunarYear );
   236     
   242     
   237     TPtrC text = iRowFormatter->FormatExtraRowInformationL( aLocInfo, fields );
   243     TPtrC text = iRowFormatter->FormatExtraRowInformationL( aLocInfo, fields );
   238     CleanupStack::PopAndDestroy( &fields );
   244     CleanupStack::PopAndDestroy( &fields );
   239     
   245 
   240     
   246     OstTraceFunctionExit0( CCALENLUNARLOCALIZER_GETEXTRAROWTEXTL_EXIT );
   241     TRACE_EXIT_POINT;
       
   242     return text;
   247     return text;
   243     }
   248     }
   244 
   249 
   245 // -----------------------------------------------------------------------------
   250 // -----------------------------------------------------------------------------
   246 // CCalenLunarLocalizer::LocalizeMonthAndDayL
   251 // CCalenLunarLocalizer::LocalizeMonthAndDayL
   247 // -----------------------------------------------------------------------------
   252 // -----------------------------------------------------------------------------
   248 //
   253 //
   249 void CCalenLunarLocalizer::LocalizeMonthAndDayL(CCalenLunarLocalizedInfo* aLocInfo,
   254 void CCalenLunarLocalizer::LocalizeMonthAndDayL(CCalenLunarLocalizedInfo* aLocInfo,
   250                                                 TCalenLunarInfo& aInfo)
   255                                                 TCalenLunarInfo& aInfo)
   251 {
   256 {
       
   257 	OstTraceFunctionEntry0( CCALENLUNARLOCALIZER_LOCALIZEMONTHANDDAYL_ENTRY );
   252 	TBuf<10> month;
   258 	TBuf<10> month;
   253 	TBuf<10> day;
   259 	TBuf<10> day;
   254 	GetChineseMonth(aInfo.iLunarDate, month);
   260 	GetChineseMonth(aInfo.iLunarDate, month);
   255 	GetChineseDay(aInfo.iLunarDate, day);
   261 	GetChineseDay(aInfo.iLunarDate, day);
   256 
   262 
   266 						QString((QChar*)month.Ptr(),month.Length())).arg(
   272 						QString((QChar*)month.Ptr(),month.Length())).arg(
   267 						QString((QChar*)day.Ptr(),day.Length()));
   273 						QString((QChar*)day.Ptr(),day.Length()));
   268 	}
   274 	}
   269 	aLocInfo->iLunarMonthAndDay = static_cast<const TUint16*> (
   275 	aLocInfo->iLunarMonthAndDay = static_cast<const TUint16*> (
   270 							formattedString.utf16()), formattedString.length();
   276 							formattedString.utf16()), formattedString.length();
       
   277 	OstTraceFunctionExit0( CCALENLUNARLOCALIZER_LOCALIZEMONTHANDDAYL_EXIT );
   271 }
   278 }
   272 
   279 
   273 // -----------------------------------------------------------------------------
   280 // -----------------------------------------------------------------------------
   274 // CCalenLunarLocalizer::GetChineseMonth
   281 // CCalenLunarLocalizer::GetChineseMonth
   275 // -----------------------------------------------------------------------------
   282 // -----------------------------------------------------------------------------
   276 //
   283 //
   277 void CCalenLunarLocalizer::GetChineseMonth(const TChineseDate& aChineseDate,
   284 void CCalenLunarLocalizer::GetChineseMonth(const TChineseDate& aChineseDate,
   278                                            TDes& aDes)
   285                                            TDes& aDes)
   279     {
   286     {
   280     TRACE_ENTRY_POINT;
   287     OstTraceFunctionEntry0( CCALENLUNARLOCALIZER_GETCHINESEMONTH_ENTRY );
   281 
       
   282     if (aChineseDate.iMonth == 1)
   288     if (aChineseDate.iMonth == 1)
   283         {
   289         {
   284         aDes.Append(KCharFirstMonth); // Special character for first month
   290         aDes.Append(KCharFirstMonth); // Special character for first month
   285         }
   291         }
   286     else
   292     else
   287         {
   293         {
   288         GetChineseDigits(aChineseDate.iMonth, aDes);
   294         GetChineseDigits(aChineseDate.iMonth, aDes);
   289         }
   295         }
   290     
   296     
   291     aDes.Append(KCharMonth);
   297     aDes.Append(KCharMonth);
   292     
   298     OstTraceFunctionExit0( CCALENLUNARLOCALIZER_GETCHINESEMONTH_EXIT );
   293     TRACE_EXIT_POINT;
       
   294     }
   299     }
   295     
   300     
   296 // -----------------------------------------------------------------------------
   301 // -----------------------------------------------------------------------------
   297 // CCalenLunarLocalizer::GetChineseDay
   302 // CCalenLunarLocalizer::GetChineseDay
   298 // -----------------------------------------------------------------------------
   303 // -----------------------------------------------------------------------------
   299 //
   304 //
   300 void CCalenLunarLocalizer::GetChineseDay(const TChineseDate& aChineseDate,
   305 void CCalenLunarLocalizer::GetChineseDay(const TChineseDate& aChineseDate,
   301                                          TDes& aDes)
   306                                          TDes& aDes)
   302     {
   307     {
   303     TRACE_ENTRY_POINT;
   308     OstTraceFunctionEntry0( CCALENLUNARLOCALIZER_GETCHINESEDAY_ENTRY );
   304     
       
   305     if (aChineseDate.iDay <= 10) // day
   309     if (aChineseDate.iDay <= 10) // day
   306         {
   310         {
   307         aDes.Append(KCharChu); 
   311         aDes.Append(KCharChu); 
   308         }
   312         }
   309     
   313     
   310     GetChineseDigits(aChineseDate.iDay, aDes);
   314     GetChineseDigits(aChineseDate.iDay, aDes);
   311     
   315     OstTraceFunctionExit0( CCALENLUNARLOCALIZER_GETCHINESEDAY_EXIT );
   312     TRACE_EXIT_POINT;
       
   313     }
   316     }
   314 
   317 
   315 // -----------------------------------------------------------------------------
   318 // -----------------------------------------------------------------------------
   316 // CCalenLunarLocalizer::GetChineseDigits
   319 // CCalenLunarLocalizer::GetChineseDigits
   317 // -----------------------------------------------------------------------------
   320 // -----------------------------------------------------------------------------
   318 //
   321 //
   319 void CCalenLunarLocalizer::GetChineseDigits(TInt aNum, TDes& aDes)
   322 void CCalenLunarLocalizer::GetChineseDigits(TInt aNum, TDes& aDes)
   320     {
   323     {
   321     TRACE_ENTRY_POINT;
   324     OstTraceFunctionEntry0( CCALENLUNARLOCALIZER_GETCHINESEDIGITS_ENTRY );
   322     
       
   323     ASSERT( 0 < aNum && aNum <= 30 );
   325     ASSERT( 0 < aNum && aNum <= 30 );
   324     TInt tens = aNum / 10;
   326     TInt tens = aNum / 10;
   325     TInt ones = aNum % 10;
   327     TInt ones = aNum % 10;
   326     if (aNum < 10) 
   328     if (aNum < 10) 
   327         {
   329         {
   353         }
   355         }
   354     else 
   356     else 
   355         {
   357         {
   356         __ASSERT_DEBUG(EFalse, User::Invariant());
   358         __ASSERT_DEBUG(EFalse, User::Invariant());
   357         }
   359         }
   358     
   360     OstTraceFunctionExit0( CCALENLUNARLOCALIZER_GETCHINESEDIGITS_EXIT );
   359     TRACE_EXIT_POINT;
       
   360     }
   361     }
   361 
   362 
   362 //EOF
   363 //EOF
   363 
   364 
   364 
   365