sapi_calendar/inc/calendariterableimpl.h
changeset 0 14df0fbfcc4e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sapi_calendar/inc/calendariterableimpl.h	Mon Mar 30 12:51:10 2009 +0300
@@ -0,0 +1,445 @@
+/*
+* 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 __CALENDARITERABLEIMPL_H
+#define __CALENDARITERABLEIMPL_H
+
+#include <LiwCommon.h>
+#include <LiwServiceIfBase.h>
+#include <LiwBufferExtension.h>
+
+#include <calentry.h>
+#include <calinstance.h>
+#include "calendarinterface.h"
+
+/**
+* Implemenation of abstract interface to iterate over the collection of Calendars.
+*
+* @see CLiwIterable
+*
+*/
+class CIterableCalendarList : public CLiwIterable	
+	{
+	public:
+	  	/**
+	     * Two-phase Constructor
+	     * @param aList list to be iterated 
+	     * @return new CIterableCalList object
+	    */	
+		static CIterableCalendarList* NewL( CDesCArray* aList );
+
+		/**
+		* Resets the iterator. 
+		*
+	     * @return void
+		*/
+		void Reset();
+
+		/**
+		* Iterates over the collection entries to fetch the next data element.
+		*
+		* @param aValue contains the next data element
+		*
+		* @return false if there are no more data elements to be fetched;
+		* true otherwise
+		* 
+		*/
+		TBool NextL(TLiwVariant& aValue);
+		
+	    /**
+	    * Destructor.
+	    */
+		~CIterableCalendarList();
+
+	private:
+	
+	    /**
+	    * Constructor
+	     * @param aList list to be iterated 
+	     * @return void
+	    */
+		CIterableCalendarList( CDesCArray* aList );
+
+
+	private:
+	
+	  	/**
+	     * CDesCArray  class pointer
+	    */		
+		CDesCArray* 	iList;
+
+	  	/**
+	     * Index on list
+	    */		
+		TInt					iIndex;	
+	};
+
+/**
+* Implemenation of abstract interface to iterate over the collection of Calendar Entries.
+*
+* @see CLiwIterable
+*
+*/
+class CIterableCalEntryList : public CLiwIterable	
+	{
+	public:
+	  	/**
+	     * Two-phase Constructor
+	     * @param aInterface Calendar Interface reference
+	     * @param aCalendarName Calendar Name
+	     * @param aIsEntryList Flag for checking validity of EntryList
+	     * @return new CIterableCalList object
+	    */	
+		static CIterableCalEntryList* NewL( CCalendarInterface& aInterface, 
+												const TDesC& aCalendarName, 
+												const TBool aIsEntryList );
+
+		/**
+		* Resets the iterator. 
+		*
+		*/
+		void Reset();
+
+		/**
+		* Iterates over the collection entries to fetch the next data element.
+		*
+		* @param aEntry contains the next data element and its corresponding data type
+		*
+		* @return false if there are no more data elements to be fetched;
+		* true otherwise
+		* 
+		*/
+		TBool NextL(TLiwVariant& aEntry);
+		
+		/**
+		* Return reference of the collection entries.
+		*
+		* @return Return reference of the collection entries
+		* 
+		*/
+		RPointerArray<CCalEntry>& EntryArray();
+
+		/**
+		* Return reference of the collection instances.
+		*
+		* @return Return reference of the collection instances.
+		* 
+		*/
+		RPointerArray<CCalInstance>& InstanceArray();
+		
+		/**
+		* Return reference of the collection instances.
+		*
+		* @return Return reference of the collection instances.
+		* 
+		*/
+		void SetResourceFree();
+		
+		/**
+		* Return CalendarName.
+		*
+		* @return Return CalendarName.
+		* 
+		*/
+		TPtrC CalendarName();
+		
+	    /**
+	    * Destructor.
+	    */
+		~CIterableCalEntryList();
+
+	private:
+
+	    /**
+	    * Constructor
+	    * @param aInterface Calendar interface reference
+	    * @param aList list to be iterated 
+	    * @return void
+	    */
+		CIterableCalEntryList( CCalendarInterface& 	aInterface, const TBool aIsEntryList );
+
+	  	/**
+	     * Two-phase Constructor
+	     * @param aCalendarName CalendarName to which this resource belongs
+	     * @return void
+	    */	
+		void ConstructL( const TDesC& aCalendarName );
+		
+	private:
+	
+	  	/**
+	     * Calendar Entry List
+	    */		
+		RPointerArray<CCalEntry> iEntryList;
+
+	  	/**
+	     * Calendar Instances List
+	    */		
+		RPointerArray<CCalInstance> iInstanceList;
+
+	  	/**
+	     * Index on list
+	    */		
+		TInt					iIndex;	
+
+	  	/**
+	     * Flag to check the validity of iEntryList;
+	     * Only one of the iEntryList/iInstanceList can be valid
+	    */		
+		TBool					iIsEntryList;	
+		
+	  	/**
+	     * Flag to check the validity of iEntryList/iInstanceList;
+	    */		
+		TBool					iIsResourceFree;	
+
+	  	/**
+	     * Calendar Interface reference
+	    */		
+		CCalendarInterface& 	iInterface;
+		
+	  	/**
+	     * Calendar Name
+	    */		
+		HBufC* 					iCalendarName;
+		
+	};
+
+/**
+* An associative array or dictionary class. The collection
+* key entries are of type string (Descriptor type) and their  
+* associated values can be an variant type.
+* 
+*  \c CLiwDefaultMap provides default map implementation to
+   *  <ul>
+   *     <li>insert a key-value pair</li>
+   *     <li>find a stored value based on a key</li>
+   *     <li>get a key based on an index</li>
+   *     <li>remove a key-value pair based on a key</li>
+   *		 <li>get the total number of stored key-value pairs</li>
+   *   </ul>
+* 
+*
+* @lib ServiceHandler.lib
+* @since S60 5.0
+*
+* @see CLiwContainer
+* @see TLiwVariant
+* @see CLiwMap
+*
+*/
+class CLiwCalEntryMap : public CLiwMap
+{
+ public:
+  
+  /*
+   * Creates an instance of CLiwCalEntryMap
+   *
+   * @param aEntry Calendar Entry
+   *
+   * @return an instance of CLiwCalEntryMap
+   */
+   static CLiwCalEntryMap* NewL( CCalEntry* aEntry );
+  
+  /*
+   * Creates an instance of CLiwCalEntryMap
+   *
+   * @param aEntry Calendar Entry Instance
+   *
+   * @return an instance of CLiwCalEntryMap
+   */
+   static CLiwCalEntryMap* NewL( CCalInstance* aEntry );
+  
+  /**
+    * Inserts a key-value pair element to the map collection. If
+    * the specified key already exists, it will be removed from
+    * the collection and the new key-value pair will be added to the
+    * map.
+    *  
+    * @param aKey the key to be stored
+    * @param aValue the value associated with the key to be stored
+   	*
+   	* @return void
+    */
+  	void InsertL(const TDesC8& aKey, const TLiwVariant& aValue);
+  
+  /**
+    * Finds a value stored in the map collection based on the key.
+    *  
+    * @param aKey the key to be searched
+    * @param aFndValue the value associated with the found key
+    *
+    * @return false if there is no key stored; true otherwise
+   */
+  	TBool FindL(const TDesC8& aKey, TLiwVariant& aValue) const;
+  
+  /**
+    * Returns the number of key-value pair stored in the map collection.
+    *  
+    * @return the number of key-value pair stored in the map collection
+   */
+  	TInt Count() const;
+  
+  /**
+    * Returns the key stored at a specified index. 
+    *  
+    * @param aIndex the index of the key to be found
+    * @param aFndKey the key found at the passed index
+    *
+    * @return true if a key-value entry is found at the passed index;
+    * false otherwise
+   */
+  	TBool AtL(TInt aIndex, TDes8& aFndKey) const;
+  
+  /**
+    * Removes a key from the map collection.
+    *  
+    * @param aKey the key to be removed from the map
+   */
+  	void Remove(const TDesC8& aKey);
+  
+  
+  
+ private:
+ 
+ 	/*
+ 	 * Constructor
+ 	 */
+	CLiwCalEntryMap( CLiwGenericParamList* aMap, CCalEntry* aEntry ) 
+	: iMap(aMap), iCalEntry(aEntry), iIsEntry(ETrue)
+	 {}
+  
+ 	/*
+ 	 * Constructor
+ 	 */
+	CLiwCalEntryMap( CLiwGenericParamList* aMap, CCalInstance* aInstance ) 
+	: iMap(aMap), iCalInstance(aInstance), iIsEntry(EFalse)
+	 { iCalEntry = &aInstance->Entry(); }
+  
+	/**
+	* Adds the element to the Map is it doesnot exist already
+	*  
+	* @param aMap The map to be used for searching
+	*
+	* @param aKey The key to be searched
+	*
+	* @return void
+	*/
+	static void PopulateKeyL( CLiwCalEntryMap* aMap,  const TDesC8& aKey );
+  
+	/**
+	* Adds the Meeting entry element to the Map is it doesnot exist already
+	*  
+	* @param aMap The map to be used for searching
+	*
+	* @param aKey The key to be searched
+	*
+	* @return void
+	*/
+	static void PopulateMeetingKeyL( CLiwCalEntryMap* aMap,  const TDesC8& aKey );
+  
+
+	/*
+	* Destructor
+	*/
+	virtual ~CLiwCalEntryMap();
+  
+	/*
+	* the underlying generic parameter list
+	*/
+	CLiwGenericParamList* iMap;
+  
+  	/**
+     * CCalEntry class pointer
+    */		
+	CCalEntry* 			iCalEntry;
+		
+  	/**
+     * CCalInstance class pointer
+    */		
+	CCalInstance* 		iCalInstance;
+	
+  	/**
+     * Flag to check for the validity of iCalEntry
+    */		
+	TBool				iIsEntry;
+};
+
+
+/**
+* Implemenation of abstract interface to iterate over the collection of UIDSets
+*
+* @see CLiwIterable
+*
+*/
+class CIterableUIDMapList : public CLiwIterable	
+	{
+	public:
+	  	/**
+	     * Two-phase Constructor
+	     * @param aList list to be iterated 
+	     * @return new CIterableUIDMapList object
+	    */	
+		static CIterableUIDMapList* NewL( CLiwDefaultList *aUIDMapList );
+
+		/**
+		* Resets the iterator. 
+		*
+		*/
+		void Reset();
+
+		/**
+		* Iterates over the collection entries to fetch the next data element.
+		*
+		* @param aEntry contains the next data element and its corresponding data type
+		*
+		* @return false if there are no more data elements to be fetched;
+		* true otherwise
+		* 
+		*/
+		TBool NextL(TLiwVariant&);
+		
+	    /**
+	    * Destructor.
+	    */
+		~CIterableUIDMapList();
+
+	private:
+	
+	    /**
+	    * Constructor
+	     * @param aList list to be iterated 
+	     * @return void
+	    */
+		CIterableUIDMapList( CLiwDefaultList *aUIDMapList );
+
+
+	private:
+	
+	  	/**
+	     * CLiwDefaultList  class pointer
+	    */		
+		CLiwDefaultList *iUIDMapList;
+
+	  	/**
+	     * Index on list
+	    */		
+		TInt					iIndex;	
+	};
+	
+#endif __CALENDARITERABLEIMPL_H