serviceproviders/sapi_calendar/calendarservice/inc/calendargetlist.h
changeset 22 fc9cf246af83
child 24 f4292e0e20df
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceproviders/sapi_calendar/calendarservice/inc/calendargetlist.h	Thu Aug 27 07:43:07 2009 +0300
@@ -0,0 +1,237 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:  Interface to GetListing the contents to a Calender
+*
+*/
+
+
+#ifndef CALENDARGETLIST_H_
+#define CALENDARGETLIST_H_
+
+
+//System Includes
+#include <e32base.h>
+
+
+//Forward Declarations
+class CCalSession;
+class CCalEntryView;
+class CCalendarSessionInfo;
+class MCalCallbackBase;
+class CCalendarFilter;
+class CCalEntry;
+class CCalInstance;
+
+/**
+ *  This class provides functionality for Calendar GetList
+ *  provides four versions of GetList Functionality Sync and Async 
+ *  @since S60_3_2_200726
+ */
+class CCalendarGetList : public CCalendarASyncRequest/*, public CActive*/
+	{
+	
+    enum TGetListOption
+        {
+        EGetListAll = 0,
+        EGetListGUid,
+        EGetListLocalUid,
+        EGetListTimeRange,
+        };
+	
+	public: //*********************Public Members(Behaviours)******************************************/
+	
+		/**
+		 * Static Method which either returns the Two Phase constructed Object or Leave 
+		 *
+		 * @param CCalendarSessionInfo  to set the iCalenderSessionInfo which is used to access various resources
+		 *										like CCalSession, CCalEntryView etc
+		 * @param aFormat used to set the iFormat it can be either ICAL or VCAL, two popular Calendar formats
+		 *
+		 * @param aInputBuffer contains the data to be GetListed to the specified calendar
+		 * 
+		 * @param CAsyncRequestObserver For ASyncronous usage of this Object this paramater is set / Default is NULL
+		 *											Set in case of Asynchronous call only
+		 * @param MCalCallbackBase      For Asyncronous usage of this Object this paramater is set
+		 *				
+		 * NOTE: Ownership of any of the parameters is not taken through this function call
+		 * NOTE: Therefore the User of this function needs to take care of neccessary cleanup of passed parameters		
+		 * @return CCalendarExport
+		 */
+		static CCalendarGetList* NewL ( CCalendarSessionInfo* aCalSessionInfo,  
+                                        const TDesC8& aGuid, 
+										CAsyncRequestObserver* aAsyncRequestObserver = NULL,
+										MCalCallbackBase* aCallBack = NULL );
+
+			static CCalendarGetList* NewL ( CCalendarSessionInfo* aCalSessionInfo,  
+                                        const TCalLocalUid aLocalUid, 
+										CAsyncRequestObserver* aAsyncRequestObserver = NULL,
+										MCalCallbackBase* aCallBack = NULL );
+		
+		static CCalendarGetList* NewL ( CCalendarSessionInfo* aCalSessionInfo,  
+                                        CCalendarFilter* aFilter, 
+		                                CAsyncRequestObserver* aAsyncRequestObserver = NULL,
+		                                MCalCallbackBase* aCallBack = NULL );								
+		/**
+		 * Destructor.
+		 */
+		~CCalendarGetList();
+
+        /**
+         * Inherited from MAsyncRequest class 
+         */ 
+        void CancelRequest();
+
+        /**
+           * Inherited from MAsyncRequest class.
+        */
+      //  TInt32 GetTransactionID();
+		
+		/**
+     	  * Synchronous Version of GetList which takes InputBuffer set at the time of Construction of this object through NewL
+     	  * and GetLists them to the Calender opened in CalSession of CalendarSessionInfoL object passed to this object
+          * It sets the LUids and GUids in the aOutputLocalUidArray, this object is not the owner of aOutputLocalUidArray
+          * @since S60_3_2_200726
+          *
+          * @param aOutputLocalUidArray 	Output which is the array of LocalUIDs after StoreL on the Calender file
+          *
+          * @return void
+          */
+		void GetListL(const TDesC8& aGuid, RPointerArray<CCalEntry>& aEntryList );
+		
+		void GetListL(const TCalLocalUid aLocalUid, RPointerArray<CCalEntry>& aEntryList );
+		
+		void GetListL( RPointerArray<CCalInstance>& aInstanceList );
+	
+		/**
+     	  * ASynchronous Version of GetList which takes InputBuffer set at the time of Construction of this object through NewL
+     	  *                     and GetLists to the Calender(outputis passed through callback)
+          *
+          * @since S60_3_2_200726
+          *
+          * @return void
+          */
+		void GetListL();
+		
+	private: //*********************Private Member(Behaviours)******************************************/
+	
+	   /** 
+          * Constructor.
+      	  * @param CCalendarSessionInfo  to set the iCalenderSessionInfo which is used to access various resources
+		  *										like CCalSession, CCalEntryView etc
+		  * @param CAsyncRequestObserver For Asyncronous usage of this Object this paramater is set / Default is NULL
+		  * @param MCalCallbackBase      For Asyncronous usage of this Object this paramater is set
+     	  */
+	    CCalendarGetList( CCalendarSessionInfo* aCalSessionInfo,
+						 CAsyncRequestObserver* aAsyncRequestObserver = NULL,
+						 MCalCallbackBase* aCallBack = NULL );
+		
+		/** 
+          * 2nd Phase of Two Phase Construction
+ 		  * @param aFormat used to set the iFormat it can be either ICAL or VCAL, two popular Calendar formats
+		  *
+		  * @param aInputBuffer contains the data to be GetListed to the specified calendar
+		  * @return void
+     	  */
+		void ConstructL( const TDesC8& aGuid );
+		void ConstructL( const TCalLocalUid aLocalUid );
+		void ConstructL( CCalendarFilter* aFilter );
+        /** 
+          * Service Functions to Enable Proper Completion of Asynchronous Request called at the end of RUNL to send output
+          * @param aReason  Give the reason it can be KErrNone or any error
+          *
+          * @return void
+          */
+        void NotifyRequestResult( TInt aReason );
+        /**
+          * Inherited from CActive class...Active Object for Aynchronous Support 
+          */ 
+        virtual void DoCancel();
+       
+
+        /** 
+         * Initializes delete option based in input filter
+        */
+        void InitializeGetListOption();
+
+        /**
+        * Start Fetching Entries
+        */
+        void StartFetchingL();
+
+        /**
+        * Gets Entries based on GUid
+        */
+        void GetGUidL();
+        /**
+        * Gets Entries based on LocalUid
+        */
+        void GetLocalUidL();
+
+        /**
+        * Delete Instances based on Time Range
+        */
+        void GetTimeRangeL();
+
+		/**
+		 * Inherited from CActive class...Active Object for Aynchronous Support
+		 */ 
+		virtual void RunL();
+		
+		/** 
+          * Service Functions to activate the Asynchronous Request by activating the Active Object using SetActive()
+      	  * @param aReason  Give the reason it can be KErrNone or any error
+		  *
+		  * @return void
+     	  */
+		void ActivateRequest( TInt aReason );
+				
+	private: //*********************Private Member(Properties)******************************************/
+			
+		/**
+          * This is the handle to CCalendarSessionInfo Service class which is used to access various resources
+		  *										like CCalSession, CCalEntryView etc
+		  * Pure USES A Relalationship...This class doesnot own this and So, it wont delete it
+          */	
+		CCalendarSessionInfo* iSessionInfo ; 
+		
+		/**
+     	  * For Syncronous usage of this Object this paramater is set / Default is NULL
+     	  * Own. This class is responsible for deleting it. HAS A Relationship
+     	  */
+		MCalCallbackBase* iCallBack;
+		
+		
+		/**
+     	  * For Syncronous usage of this Object this paramater is set / Default is NULL
+     	  * Own. This class is responsible for deleting it. HAS A Relationship
+     	  */
+		
+		CAsyncRequestObserver* iAsyncRequestObserver;
+
+        /**
+         * Filter Object
+        */ 
+        CCalendarFilter* iFilter;
+        HBufC8* iGuid;
+        TUint32 iLocalUid;
+		
+        TGetListOption iGetListOption;
+	
+        RPointerArray<CCalEntry> iEntryList;
+        
+        RPointerArray<CCalInstance> iInstanceList;
+	};
+	
+
+#endif CALENDARGETLIST_H_