calendarui/regionalplugins/lunarVietnamese/src/calenlunarvietnameselocalizer.cpp
changeset 0 f979ecb2b13e
child 18 c198609911f9
child 30 d68a4b5d5885
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/regionalplugins/lunarVietnamese/src/calenlunarvietnameselocalizer.cpp	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,149 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Calendar Lunar Plugin 
+ *
+*/
+
+
+#include "calenlunarvietnameselocalizer.h"
+
+#include "calenlunarlocalizer.h"
+#include "calenlunarinfo.h"
+#include "calenlunarlocalizedinfo.h"
+#include "calenextrarowformatter.h"
+
+#include <CalenLunarVietnamesePluginData.rsg>
+#include <StringLoader.h>
+
+
+// -----------------------------------------------------------------------------
+// CCalenLunarVietnameseLocalizer::NewL
+// -----------------------------------------------------------------------------
+//
+CCalenLunarVietnameseLocalizer* CCalenLunarVietnameseLocalizer::NewL()
+    {
+    CCalenLunarVietnameseLocalizer* self = new (ELeave) CCalenLunarVietnameseLocalizer;
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CCalenLunarVietnameseLocalizer::~CCalenLunarVietnameseLocalizer
+// -----------------------------------------------------------------------------
+//
+CCalenLunarVietnameseLocalizer::~CCalenLunarVietnameseLocalizer()
+    {
+    delete iYearOfCat;
+    }
+
+// -----------------------------------------------------------------------------
+// CCalenLunarVietnameseLocalizer::CCalenLunarVietnameseLocalizer
+// -----------------------------------------------------------------------------
+//
+CCalenLunarVietnameseLocalizer::CCalenLunarVietnameseLocalizer()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CCalenLunarVietnameseLocalizer::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CCalenLunarVietnameseLocalizer::ConstructL()
+    {
+    CCalenLunarLocalizer::ConstructL();
+    iYearOfCat = StringLoader::LoadL( R_CALE_YEAR_OF_CAT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCalenLunarVietnameseLocalizer::LocalizeL
+// -----------------------------------------------------------------------------
+//
+CCalenLunarLocalizedInfo* CCalenLunarVietnameseLocalizer::LocalizeL( TCalenLunarInfo& aInfo )
+    {    
+    // 1) In Vietnamese variant, two festivals are not used
+    // Seventh Night Festival
+    // Eight Day of Twelfth Month Festival
+    if ( aInfo.iFestival == TCalenLunarInfo::EFestivalSeventhNight || 
+         aInfo.iFestival == TCalenLunarInfo::EFestivalTwelfthMonth )         
+        {
+        aInfo.iFestival = TCalenLunarInfo::ENoFestival;
+        }
+    
+    // Use upper class to localize standard stuff
+    CCalenLunarLocalizedInfo* localized = CCalenLunarLocalizer::LocalizeL( aInfo );
+
+    // 2) Replace year of rabbit with year of cat. different logical strings.
+    if ( aInfo.AnimalYear() == TCalenLunarInfo::EYearOfRabbit )
+        {
+        localized->iAnimalYear.Set( *iYearOfCat );
+        }
+    return localized; 
+    }
+
+
+// -----------------------------------------------------------------------------
+// CCalenLunarVietnameseLocalizer::GetExtraRowTextL
+// -----------------------------------------------------------------------------
+//
+TPtrC CCalenLunarVietnameseLocalizer::GetExtraRowTextL( CCalenLunarLocalizedInfo& aLocInfo, TInt aMaxWidth, 
+														const CFont& aFont, TBool aTwoLines)
+    {
+    // In Vietnamese, we don't show animal year in extra row at all, 
+    // because it's in essence same name as lunar years terrestial branch. 
+    // It's shown in details dialog though.
+    RArray<CCalenLunarLocalizedInfo::TField> fields;
+    CleanupClosePushL( fields );
+    fields.AppendL( CCalenLunarLocalizedInfo::EFestival );
+    fields.AppendL( CCalenLunarLocalizedInfo::ESolarTerm );
+    fields.AppendL( CCalenLunarLocalizedInfo::ELunarMonthAndDay );
+    //fields.AppendL( CCalenLunarLocalizedInfo::EAnimalYear );
+    fields.AppendL( CCalenLunarLocalizedInfo::ELunarYear );
+    
+    TPtrC text = iRowFormatter->FormatExtraRowInformationL( aLocInfo, fields, aMaxWidth, aFont
+
+                                                            , aTwoLines 
+
+                                                            );
+    CleanupStack::PopAndDestroy( &fields );
+    return text;
+    }
+
+// -----------------------------------------------------------------------------
+// CCalenLunarVietnameseLocalizer::LocalizeMonthAndDayL
+// -----------------------------------------------------------------------------
+//
+void CCalenLunarVietnameseLocalizer::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;
+    month.Num( TInt64(aInfo.iLunarDate.iMonth) );
+    day.Num( TInt64(aInfo.iLunarDate.iDay ));
+    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 );
+    }
+
+//EOF