diff -r bd7edf625bdd -r 97232defd20e calendarui/regionalplugins/KoreanLunar/inc/CalenKoreanLunarPlugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/calendarui/regionalplugins/KoreanLunar/inc/CalenKoreanLunarPlugin.h Tue Sep 14 21:17:03 2010 +0300 @@ -0,0 +1,162 @@ +/* +* Copyright (c) 2002-2004 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 : Class looking after alarm fields for forms. +* +*/ + +#ifndef __CALENKOREANLUNARPLUGIN_H__ +#define __CALENKOREANLUNARPLUGIN_H__ + +// INCLUDES +#include +#include +#include +#include +#include +#include +#include +#include + +// FORWARD DECLARATION +class CCalenLunarInfoProvider; +class CCalenLunarLocalizer; +class CCalenExtraRowFormatter; +class CCalenLunarLocalizedInfo; +class CFont; + +/** +* Class declaration for Korean lunar plugin +*/ +class CCalenKoreanLunarPlugin : public CCalenCustomisation, + public MCalenCommandHandler, + public MCalenNotificationHandler + { +public: // public API + static CCalenKoreanLunarPlugin* CreateKoreanPluginL( MCalenServices* aServices ); + + virtual ~CCalenKoreanLunarPlugin(); + +public: // Plugins internal Public API + + TBool LoadEnabledStatusL(); + void StoreEnabledStatusL( TBool aEnabled ); + +protected://From CCalenCustomisation + + void GetCustomViewsL( RPointerArray& aCustomViewArray ); + void GetCustomSettingsL( RPointerArray& aCustomSettingArray ); + CCoeControl* InfobarL( const TRect& aRect ); + const TDesC& InfobarL(); + CCoeControl* PreviewPaneL( TRect& aRect ); + MCalenCommandHandler* CommandHandlerL( TInt aCommand ); + void RemoveViewsFromCycle( RArray& aViews ); + TBool CustomiseMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); + TBool CanBeEnabledDisabled(); + TAny* CalenCustomisationExtensionL( TUid aExtensionUid ); + + /** + * Gets the preview pane from the plugin to be shown at the + * calendar view. Offers the rectangle for the preview pane, + * which it can be used to draw the pane. + * + * @param aRect The area available for the Preview Pane + * @return Preview pane interface + */ + virtual MCalenPreview* CustomPreviewPaneL( TRect& aRect ); + + // korean support to conversion as getting new api seems too difficult + public: + virtual void DateTimeToKoreanL( const TDateTime& aDateTime, TKoreanDate& aKoreanDate ); + + /* Method converting korean lunar date to gregorian date, + supported range is 1.1.1900 - 31.12.2099 + Leaves with KErrArgument if date is uncovertible. + */ + virtual void KoreanToDateTimeL( TKoreanDate& aKoreanDate, TDateTime& aDateTime ); + + /* Method getting supported gregorian date range + */ + virtual void DateRange( TDateTime& aLower, TDateTime& aUpper ); + + /* Method getting supported korean lunar date range + */ + virtual void DateRange( TKoreanDate& aLower, TKoreanDate& aUpper ); + +protected:// From MCalenCommandHandler + TBool HandleCommandL( const TCalenCommand& aCommand ); + TAny* CalenCommandHandlerExtensionL( TUid aExtensionUid ); + +protected://From MCalenNotificationHandler + void HandleNotification( const TCalenNotification aNotification ); + +private: // own methods + CCalenKoreanLunarPlugin(TUint32 aCenRepLunarEnabledId, MCalenServices* aServices); + + void ConstructL(); + void SetLunarLocalizerL(); + void ShowDetailsL(); + TInt GetColor(); + + void FormatExtraRowStringL( CEikLabel& aLabel ); + TPtrC GetExtraRowTextL( CCalenLunarLocalizedInfo& aLocInfo, TInt aMaxWidth, const CFont& aFont ); + void UpdateInfoBarL(); + +private: // data + /** + * Tells, if lunar functionality is currently enabled by user. + * If not, only setting item is provided by plugin + */ + TBool iLunarEnabled; + + /** + * Language independent provider of lunar calendar information + */ + CCalenLunarInfoProvider* iInfoProvider; + + /** + * Language specific localizer of lunar calendar information + */ + CCalenLunarLocalizer* iLocalizer; + + /** + * Localized lunar info for currently focused day + */ + CCalenLunarLocalizedInfo* iLocInfo; + + /** + * Currently displayed text for extra row + */ + TPtrC iExtraRowText; + + RConeResourceLoader iResourceLoader; + + // Central repository Id for enabled setting + // We have different setting for Chinese and Vietnamese + // in case that in future they would be in same image + TUint32 iCenRepLunarEnabledId; + CEikLabel* iLabel; + MCalenServices* iServices; + TInt iStart; + TInt iEnd; + + CKoreanCalConv* iConverter; + + // Infobar rect + TRect iRect; + + // Skin color + TRgb iSkinColor; + }; + +#endif // __CALENKOREANLUNARPLUGIN_H__