calendarui/regionalplugins/KoreanLunar/inc/CalenKoreanLunarPlugin.h
branchRCL_3
changeset 31 97232defd20e
--- /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 <e32base.h>
+#include <coneresloader.h>
+#include <calencommandhandler.h>
+#include <calennotificationhandler.h>
+#include <calenservices.h>
+#include <calencustomisation.h>
+#include <eiklabel.h>
+#include <KoreanCalConv.h>
+
+// 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<CCalenView>& aCustomViewArray );
+		void GetCustomSettingsL( RPointerArray<CAknSettingItem>& aCustomSettingArray );
+        CCoeControl* InfobarL( const TRect& aRect );
+        const TDesC& InfobarL();
+        CCoeControl* PreviewPaneL(  TRect& aRect );
+        MCalenCommandHandler* CommandHandlerL( TInt aCommand );
+        void RemoveViewsFromCycle( RArray<TInt>& 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__