serviceproviders/sapi_calendar/inc/calendarinterface.h
changeset 19 989d2f495d90
child 22 fc9cf246af83
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceproviders/sapi_calendar/inc/calendarinterface.h	Fri Jul 03 15:51:24 2009 +0100
@@ -0,0 +1,609 @@
+/*
+* 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:  Defination of class CCalendarInterface
+*
+*/
+
+
+#ifndef __CALENDARINTERFACE_H
+#define __CALENDARINTERFACE_H
+
+#include <LiwCommon.h>
+#include <LiwServiceIfBase.h>
+#include <LiwBufferExtension.h>
+
+#include <calrrule.h>
+#include <calalarm.h>
+#include <caluser.h>
+#include <calentry.h>
+#include <calchangecallback.h>
+
+#include "calendarheader.h"
+#include "calendarconstants.h"
+
+class CCalendarService;
+class CIterableCalEntryList;
+class CEntryAttributes;
+class TUIDSet;
+
+/**
+ * This class provides the Calendar SAPI interface to LIW Framework 
+*/
+class CCalendarInterface : public CBase, public MLiwInterface
+	{
+		
+	public:
+
+	    /**
+	     * Two-phased constructor.
+	     * @return CCalendarInterface* 
+	    */
+		static CCalendarInterface* NewL();
+
+	    /**
+	    * Destructor.
+	    */
+		virtual ~CCalendarInterface();
+
+	private:
+
+		/**
+	     * Constructor
+	    */
+		CCalendarInterface();
+
+		/**
+	     * Symbian Constructor
+	    */
+		void ConstructL();
+
+	// MLiwInterface member functions
+	public:
+
+		/**
+	     * Executes the SAPI as per params
+	     * @param aCmdName Command name defining which operation is to be performed
+	     * @param aInParamList  Input param list
+	     * @param aOutParamList Output list
+	     * @param aCmdOptions Command option
+	     * @param aCallback Callback object pointer
+	    */
+		virtual void ExecuteCmdL( const TDesC8& aCmdName,
+		                       const CLiwGenericParamList& aInParamList,
+		                       CLiwGenericParamList& aOutParamList,
+		                       TUint aCmdOptions = 0,
+		                       MLiwNotifyCallback* aCallback = 0 );
+		
+		/**
+	     * Closes the interface 
+	    */
+		virtual void Close();
+		
+	/**
+     * Static Functions
+	 * 
+	 * Same functionality required outside the CCalendarInterface class in case of async
+	 * operation. Those set of functions can be given as static.
+    */
+	public:
+ 
+		/**
+	     * Converts symbian errcode to equivalent SAPI error code
+	     * @param aErrorCode Symbian error code
+		 *
+	     * @return mapped SAPI error code
+	    */
+ 		static TInt32 ErrCodeConversion(TInt aErrorCode);
+
+		/**
+	     * Set Import output to output parameter
+	     * @param aOutputUIDSet Import output
+	     * @param aOutParamList Output parammeter
+		 *
+	     * @return void
+	    */
+		static void SetImportOutputL( RPointerArray<TUIDSet>& aOutputUIDSet, 
+												CLiwGenericParamList& aOutParamList );
+
+		/**
+	     * Set Change Notification output to output parameter
+	     * @param aOutputChangeSet Notifications list
+	     * @param aOutParamList Output parammeter
+		 *
+	     * @return void
+	    */
+		static void SetNotifyOutputL( RArray<TCalChangeEntry>& aOutputChangeSet,  
+												CLiwGenericParamList& aOutParamList );
+		
+		/**
+	     * Set GlobalUid/LocalUid to the LiwVariant
+	     * @param aReturnValue Variant to be set
+	     * @param aUIDSet GlobalUid/LocalUid
+		 *
+	     * @return void
+	    */
+		static void GetTLiwVariantForUIDSetL( TLiwVariant& aReturnValue, TUIDSet* aUIDSet );
+
+		/**
+	     * Set Change type to the LiwVariant
+	     * @param aValue Variant to be set
+	     * @param aChangeEntry Change Type
+		 *
+	     * @return void
+	    */
+		static void GetTLiwVariantForCalChangeEntryL( TLiwVariant& aValue, 
+												TCalChangeEntry& aChangeEntry );
+
+		/**
+	     * Cleanup function for an CIterableCalEntryList
+	     * @param aIterEntryList CIterableCalEntryList pointer
+		 *
+	     * @return void
+	    */
+		static void CleanupIterableCalEntry(void* aIterEntryList);
+
+		/**
+	     * Returns Day of Month of repeat rule as LiwVariant Map. Caller takes the ownership of map
+	     * @param aDayOfMonth Day of Month
+		 *
+	     * @return CLiwDefaultMap* LiwMap object
+	    */
+		static CLiwDefaultMap* GetDayOfMonthL( const TCalRRule::TDayOfMonth&  aDayOfMonth );
+
+		/**
+	     * Returns CalUser as LiwVariant Map. Caller takes the ownership of map
+	     * @param aCalUser Day of Month
+	     * @param aAttendee True if User is an attendee
+		 *
+	     * @return CLiwDefaultMap* LiwMap object
+	    */
+		static CLiwDefaultMap* GetCalUserL( CCalUser* aCalUser, TBool aAttendee = EFalse );
+
+		/**
+	     * Returns array of CalTime as LiwVariant List. Caller takes the ownership of list
+	     * @param aDates Array of CalTime 
+		 *
+	     * @return CLiwDefaultList* LiwList object
+	    */
+		static CLiwDefaultList* GetDatesListL( RArray<TCalTime>& aDates ) ;
+
+		/**
+	     * Returns RepeatRule as LiwVariant Map. Caller takes the ownership of map
+	     * @param aRepeatRule Repeat Rule
+		 *
+	     * @return CLiwDefaultMap* LiwMap object
+	    */
+		static CLiwDefaultMap* GetRRMapL( const TCalRRule& aRepeatRule );
+
+		/**
+	     * Returns string literal for the given Entry Type
+	     * @param aType Entry Type
+		 *
+	     * @return TPtrC Entry Type string
+	    */
+		static TPtrC GetEntryTypeL( const CCalEntry::TType aType );
+
+		/**
+	     * Returns string literal for the given Entry Replication status
+	     * @param aReplicationStatus Replication status
+		 *
+	     * @return TPtrC Replication status string
+	    */
+		static TPtrC GetReplicationL( const CCalEntry::TReplicationStatus aReplicationStatus );
+
+		/**
+	     * Returns string literal for Change Types
+	     * @param aChangeType Change Type
+		 *
+	     * @return TPtrC Change Type
+	    */
+		static TPtrC GetChangeType( const MCalChangeCallBack2::TChangeType aChangeType );
+
+		/**
+	     * Returns string literal for Entry Status
+	     * @param aStatus Entry Status
+		 *
+	     * @return TPtrC Entry Status
+	    */
+		static TPtrC GetStatusL( const CCalEntry::TStatus aStatus );
+
+		/**
+	     * Returns string literal for Attendee Status
+	     * @param aStatus Attendee Status
+		 *
+	     * @return TPtrC Attendee Status
+	    */
+		static TPtrC GetAttendeeStatusL( const CCalAttendee::TCalStatus aStatus );
+
+		/**
+	     * Get string literal for Attendee Role
+	     * @param aRole Attendee Role
+		 *
+	     * @return TPtrC Attendee Role
+	    */
+		static TPtrC GetAttendeeRoleL( const CCalAttendee::TCalRole aRole );
+
+		/**
+	     * Return string literal for Entry Method
+	     * @param aMethod Entry Method
+		 *
+	     * @return TPtrC Entry Method
+	    */
+		static TPtrC GetMethodL( const CCalEntry::TMethod aMethod );
+
+		/**
+	     * Removes the reference of CIterableCalEntryList from the table maintained 
+	     * by interface
+	     * @param aCalEntryList Element that need to be removed from the table
+		 *
+	     * @return void
+	    */
+		void RemoveCalEntryListFromArray( CIterableCalEntryList* aCalEntryList );
+
+
+	private:
+	
+		/**
+	     * Issues Add Calendar request to Calendar Service
+	     * @param aInParamList Input param list
+	     * @param aOutParamList Output param list
+	     * @param aPosBased ETrue for position pased parameters
+		 *
+	     * @return void
+	    */
+		void AddCalendarL(const CLiwGenericParamList& aInParamList, 
+												CLiwGenericParamList& aOutParamList, 
+												const TBool aPosBased );
+		
+		/**
+	     * Issues Add Calendar Entry request to Calendar Service
+	     * @param aInParamList Input param list
+	     * @param aOutParamList Output param list
+	     * @param aPosBased ETrue for position pased parameters
+		 *
+	     * @return void
+	    */
+		void AddCalendarEntryL(const CLiwGenericParamList& aInParamList, 
+												CLiwGenericParamList& aOutParamList, 
+												const TBool aPosBased );
+
+		/**
+	     * Issues Delete Calendar request to Calendar Service
+	     * @param aInParamList Input param list
+	     * @param aOutParamList Output param list
+	     * @param aPosBased ETrue for position pased parameters
+		 *
+	     * @return void
+	    */
+		void DeleteCalendarL( const CLiwGenericParamList& aInParamList, TBool aPosBased);
+		
+		/**
+	     * Issues Delete Calendar Entry request to Calendar Service
+	     * @param aInParamList Input param list
+	     * @param aOutParamList Output param list
+	     * @param aCmdOptions Command option
+	     * @param aCallback Callback object pointer
+	     * @param aPosBased ETrue for position pased parameters
+	     * @param aTransactionId Output param for async request to store transaction id
+		 *
+	     * @return void
+	    */
+		void DeleteCalendarEntryL(const CLiwGenericParamList& aInParamList, 
+												CLiwGenericParamList& aOutParamList,
+												TUint aCmdOptions,
+				                       			MLiwNotifyCallback* aCallback ,
+												const TBool aPosBased,
+												TInt32& aTransactionId  );
+
+		/**
+	     * Issues GetList Calendar request to Calendar Service
+	     * @param aInParamList Input param list
+	     * @param aOutParamList Output param list
+	     * @param aPosBased ETrue for position pased parameters
+		 *
+	     * @return void
+	    */
+		void GetListCalendarL(const CLiwGenericParamList& aInParamList, 
+												CLiwGenericParamList& aOutParamList, 
+												const TBool aPosBased );
+		
+		/**
+	     * Issues GetList Calendar Entry request to Calendar Service
+	     * @param aInParamList Input param list
+	     * @param aOutParamList Output param list
+	     * @param aPosBased ETrue for position pased parameters
+		 *
+	     * @return void
+	    */
+		void GetListCalendarEntryL(const CLiwGenericParamList& aInParamList, 
+												CLiwGenericParamList& aOutParamList, 
+												const TBool aPosBased );
+												
+		/**
+	     * Issues Import Calendar Entry request to Calendar Service
+	     * @param aInParamList Input param list
+	     * @param aOutParamList Output param list
+	     * @param aCmdOptions Command option
+	     * @param aCallback Callback object pointer
+	     * @param aPosBased ETrue for position pased parameters
+	     * @param aTransactionId Output param for async request to store transaction id
+		 *
+	     * @return void
+	    */
+		void ImportCalendarEntryL(const CLiwGenericParamList& aInParamList, 
+												CLiwGenericParamList& aOutParamList,
+												TUint aCmdOptions,
+				                       			MLiwNotifyCallback* aCallback ,
+												const TBool aPosBased,
+												TInt32& aTransactionId  );
+
+		/**
+	     * Issues Export Calendar Entry request to Calendar Service
+	     * @param aInParamList Input param list
+	     * @param aOutParamList Output param list
+	     * @param aCmdOptions Command option
+	     * @param aCallback Callback object pointer
+	     * @param aPosBased ETrue for position pased parameters
+	     * @param aTransactionId Output param for async request to store transaction id
+		 *
+	     * @return void
+	    */
+		void ExportCalendarEntryL(const CLiwGenericParamList& aInParamList, 
+												CLiwGenericParamList& aOutParamList,
+												TUint aCmdOptions,
+				                       			MLiwNotifyCallback* aCallback ,
+												const TBool aPosBased,
+												TInt32& aTransactionId  );
+													
+		/**
+	     * Issues Change Notification request to Calendar Service
+	     * @param aInParamList Input param list
+	     * @param aCallback Callback object pointer
+	     * @param aPosBased ETrue for position pased parameters
+	     * @param aTransactionId Output param for async request to store transaction id
+		 *
+	     * @return void
+	    */
+		void RequestNotificationL( const CLiwGenericParamList& aInParamList, 
+				                       			MLiwNotifyCallback* aCallback,
+												const TBool aPosBased,
+												TInt32& aTransactionId );
+
+
+
+		/**
+	     * Extracts LocalUid as TCalLocalUid from input Uid String
+	     * @param aLocalUid Input string
+	     * @param aOutLocalUid output param for LocalUid
+		 *
+	     * @return void
+	    */
+		void GetLocalUid( const TDesC& aLocalUid, TCalLocalUid& aOutLocalUid );
+		
+		/**
+	     * Extracts GlobalUid as 8-bit string from input Uid String
+	     * @param aGlobalUid Input string
+	     * @param aOutGlobalUid output param for GlobalUid
+		 *
+	     * @return void
+	    */
+		void GetGlobalUid( const TDesC& aGlobalUid, TPtr8 aOutGlobalUid );
+
+		/**
+	     * Extracts ContentType from the input param list
+	     * @param aInParamList Input param list
+	     * @param aPosBased ETrue for position pased parameters
+		 *
+	     * @return ContentType string
+	    */
+		TPtrC GetContentType(const CLiwGenericParamList& aInParamList, 
+												TBool& aPosBased );
+		
+		/**
+	     * Extracts TransactionId from the input param list
+	     * @param aInParamList Input param list
+	     * @param aTransactionId output param fromtransactiod id
+		 *
+	     * @return void
+	    */
+		void GetTransactionIdL( const CLiwGenericParamList& aInParamList, 
+												TInt32& aTransactionId );
+
+		/**
+	     * Extracts CalendarName from the input param list
+	     * @param aInParamList Input param list
+	     * @param aCmdName Command Name
+	     * @param aField ParameterName to read
+	     * @param aPosBased ETrue for position pased parameters
+	     * @param aCalendarName Output param for Calendar Name
+		 *
+	     * @return void
+	    */
+	    void GetCalendarNameL( const CLiwGenericParamList& aInParamList,
+	    										const TDesC8& aCmdName,  
+	    										const TDesC8& aField, 
+	    										TBool aPosBased, 
+	    										HBufC*& aCalendarName );
+
+		/**
+	     * Extracts Descriptor Field from Map in input param list
+	     * @param aInParamList Input param list
+	     * @param aCmdName Command Name
+	     * @param aMapName Map name in input param list
+	     * @param aFieldName Filed name to read from map
+	     * @param aPosBased ETrue for position pased parameters
+	     * @param aOutputField Output param for Field value
+		 *
+	     * @return void
+	    */
+		void CCalendarInterface::GetDesCFieldFromMapL( const CLiwGenericParamList& aInParamList, 
+														const TDesC8& aCmdName, 
+														const TDesC8& aMapName, 
+														const TDesC8& aFieldName, 
+														TBool aPosBased, 
+														HBufC*& aOutputField );
+
+		/**
+	     * Extracts 8-bit Descriptor Field from Map in input param list
+	     * @param aInParamList Input param list
+	     * @param aCmdName Command Name
+	     * @param aMapName Map name in input param list
+	     * @param aFieldName Filed name to read from map
+	     * @param aPosBased ETrue for position pased parameters
+	     * @param aOutputField Output param for Field value
+		 *
+	     * @return void
+	    */
+		void CCalendarInterface::GetDesC8FieldFromMapL( const CLiwGenericParamList& aInParamList, 
+														const TDesC8& aCmdName, 
+														const TDesC8& aMapName, 
+														const TDesC8& aFieldName, 
+														TBool aPosBased, 
+														HBufC8*& aOutputField );
+
+		/**
+	     * Extracts Entry attributes for Add/Update request
+	     * @param aInParamList Input param list
+	     * @param aCalendarName CalendarName
+	     * @param aPosBased ETrue for position pased parameters
+		 *
+	     * @return CEntryAttributes* EntryAttributes object
+	    */
+		CEntryAttributes* GetAddParametersL( const CLiwGenericParamList& aInParamList, 
+												const TDesC& aCalendarName,
+												TBool aPosBased);
+		
+		/**
+	     * Extracts Filter for Delete request
+	     * @param aInParamList Input param list
+	     * @param aFilter Output param for Filter
+	     * @param aPosBased ETrue for position pased parameters
+		 *
+	     * @return void
+	    */
+		void GetDeleteEntryFilterL(const CLiwGenericParamList& aInParamList, 
+												CCalendarFilter& aFilter, 
+												const TBool aPosBased );
+
+		/**
+	     * Extracts Inputs for Import request
+	     * @param aInParamList Input param list
+	     * @param aPosBased ETrue for position pased parameters
+	     * @param aInputBuffer Output param for Buffer from which entries to be imported
+	     * @param aImportFile Output param for File from which entries to be imported
+	     * @param aCalendarFormat Output param for Calendar Format to be used (ICal/VCal)
+	     * @param aCalendarName Output param for Calendar Name
+		 *
+	     * @return void
+	    */
+		void GetImportInputL( const CLiwGenericParamList& aInParamList,
+												TBool    aPosBased, 
+												HBufC8*& aInputBuffer, 
+												TDes&   aImportFile,
+												TDes8&  aCalendarFormat, 
+												TDes&   aCalendarName );
+
+		/**
+	     * Extracts Inputs for Export request
+	     * @param aInParamList Input param list
+	     * @param aPosBased ETrue for position pased parameters
+	     * @param aCalExportParams Output param for Export parameters
+		 *
+	     * @return void
+	    */
+		void GetExportInputL( const CLiwGenericParamList& aInParamList, 
+												TBool                  aPosBased, 
+												CCalendarExportParams& aCalExportParams);							  
+	
+		/**
+	     * Extracts Inputs for Change Notification request
+	     * @param aInParamList Input param list
+	     * @param aFileter Output param for Change Notification filter
+	     * @param aPosBased ETrue for position pased parameters
+		 *
+	     * @return void
+	    */
+		void GetNotificationFilterL( const CLiwGenericParamList& aInParamList, 
+												CCalendarFilter& aFilter, 
+												const TBool aPosBased );
+												
+		/**
+	     * Appends error message
+	     * @param aCmdName Command Name
+	     * @param aParameter Parameter Name
+	     * @param aMessage Error message
+		 *
+	     * @return void
+	    */
+		void AppendErrorMessageL( const TDesC8& aCmdName, 
+												const TDesC8& aParameter, 
+												const TDesC& aMessage );
+												
+		/**
+	     * Checks for the valid data type of Parameter.
+	     * @param aParam Input parameter
+	     * @param aExpectedtype Expected type for input parameter
+	     * @param aCmdName Command Name
+	     * @param aParameter Parameter Name
+	     * @param aErrorMessage Error message in case of type mismatch
+		 *
+	     * @return void
+	    */
+		void ValidateParamTypeL( TLiwVariant& aParam, 
+												LIW::TVariantTypeId aExpectedtype, 
+												const TDesC8& aCmdName, 
+												const TDesC8& aParameter,
+												const TDesC& aMessage );
+
+		/**
+	     * Returns entry type for given LocalUid.
+	     * @param aCalendarName CalendarName
+	     * @param aLocalUid LocalUid
+		 *
+	     * @return Entry type
+	    */
+		TInt GetEntryType( const TDesC& aCalendarName, TCalLocalUid aLocalUid );
+		
+		/**
+	     * Check if given calendar is in use.
+	     * @param aCalendarName CalendarName
+		 *
+	     * @return True if given calendar is in use
+	    */
+		TBool CCalendarInterface::CheckCalendarInUse( const TDesC& aCalendarName );
+		
+	private:
+
+	  	/**
+	     * CCalendarService class pointer
+	     * @internal
+	    */		
+		CCalendarService* iCalService;
+
+	  	/**
+	     * Error Message object
+	     * @internal
+	    */		
+		HBufC* iErrorMessage;
+
+	  	/**
+	     * Array containing the list of CalEntryList.
+	     * @internal
+	    */		
+		RPointerArray<CIterableCalEntryList> iArrayCalEntryList;
+
+	};
+
+
+#endif __CALENDARINTERFACE_H
\ No newline at end of file