diff -r f979ecb2b13e -r c198609911f9 calendarui/regionalplugins/inc/CalenSolarTerms.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/calendarui/regionalplugins/inc/CalenSolarTerms.h Fri Apr 16 14:57:40 2010 +0300 @@ -0,0 +1,97 @@ +/* +* Copyright (c) 2006 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: Provides Solar Term dates for Lunar Calendar. Reads and caches +* binary data file that lists solar term dates. +* +*/ + + + +#ifndef C_CALENSOLARTERMS_H +#define C_CALENSOLARTERMS_H + +#include +#include + +class RFs; + +const TInt KSolarTermCount(24); + + +/** + * Provides Solar term dates for Lunar Calendar. + * + * Solar term dates are listed in special binary format file. + * CCalenSolarTerms reads and caches this file one year at a time. + * + * @lib CalenLunar.dll + * @since S60 v3.1 + */ +NONSHARABLE_CLASS( CCalenSolarTerms ) : public CBase + { +public: + IMPORT_C static CCalenSolarTerms* NewL(RFs& aFs); + + IMPORT_C virtual ~CCalenSolarTerms(); + + /** + * Checks if date is solar term date. If it is, returns index to particular solar term, otherwise returns error code + * Index can be then passed to GetSolarTermNameL function. + * + * @since S60 v3.1 + * @param aDateTime date that is checked + * @return index of solar term, if date is solar term date. + * KErrNone, if date is not solar term date + * KErrNotSupported, if date is outside of supported + * range for solar term data. + */ + IMPORT_C TInt CheckSolarTermDateL( const TDateTime& aDateTime ); + + +private: + CCalenSolarTerms(RFs& aFs); + + void ConstructL(); + + /** + * Returns ETrue, if date fits into date range of available solar item + * data. + * @since 3.0 + */ + TBool HasSolarTermDataAvailable(const TDateTime& aDate) const; + + /** + * Reads and caches 24 solar term dates from "SolarItems" file + */ + void ReadSolarTermsL(TDateTime aDate); + +private: // data + /** + * File server handle. + */ + RFs& iFs; + + /** + * Year that is currently cached from file to memory + */ + TInt iCachedYear; + + /** + * Table of solar term dates for currently cached year + */ + TDateTime iSolarTermDates[KSolarTermCount]; + + }; + +#endif // C_CALENSOLARTERMS_H