phonebookui/Phonebook2/xSPExtensionManager/src/CxSPContactManager.h
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/xSPExtensionManager/src/CxSPContactManager.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,215 @@
+/*
+* Copyright (c) 2006 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: 
+*       Contact manager.
+*
+*/
+
+
+#ifndef __CXSPCONTACTMANAGER_H__
+#define __CXSPCONTACTMANAGER_H__
+
+// INCLUDES
+#include <e32base.h>
+#include "MxSPContactManager.h"
+
+// FORWARD DECLARATIONS
+class CPbk2ViewState;
+class MxSPFactory;
+class MVPbkContactStoreList;
+class CVPbkContactManager;
+
+/**
+ * Contact map. Represents simply the mapping/linking between a single
+ * contact link and a contact id.
+ */
+class CxSPPbkContactMap : public CBase
+	{
+	public:
+
+		/**
+         * Constructor.
+         */
+        CxSPPbkContactMap();
+
+		/**
+         * Destructor.
+         */
+        ~CxSPPbkContactMap();
+
+		/**
+		 * Internalize the class data
+		 *
+		 * @param aStream Stream for internalizing
+		 * @param aContactStores
+		 */
+		void InternalizeL( RReadStream& aStream,
+							const MVPbkContactStoreList& aContactStores );
+
+		/**
+		 * Externalize the class data
+		 *
+		 * @param aStream Stream for externalizing
+		 */
+		void ExternalizeL( RWriteStream& aStream ) const;
+
+	public: // data
+		/// Original contact id
+		TUint32 iId;
+
+		/// xSP contact id
+		TInt32 ixSPContactId;
+
+		/// Own: Contact link
+		MVPbkContactLink* iPbkContactLink;
+	};
+
+
+/**
+ * Contact manager.
+ */
+class CxSPContactManager : public CBase,
+                               public MxSPContactManager
+    {
+    public:
+        /**
+		 * Static factory function that performs the 2-phased construction.
+		 *
+		 * @param aFactories Array of xSP factories
+		 * @param aVPbkContactManager Virtual phonebook contact manager
+		 *
+         * @return new object of this class
+         */
+        static CxSPContactManager* NewL( CArrayPtrFlat<MxSPFactory>& aFactories,
+        									CVPbkContactManager& aVPbkContactManager );
+
+        /**
+         * Destructor.
+         */
+        ~CxSPContactManager();
+
+	public: // from MxSPContactManager
+
+		void MapContactL( TUint32 aId,
+						  const MVPbkContactLink& aPbkContactLink,
+        				  TInt32 axSPContactId );
+		void UnmapContactL( TUint32 aId,
+						    const MVPbkContactLink& aPbkContactLink,
+        					TInt32 axSPContactId );
+		void GetMappedPbkContactsL( TUint32 aId,
+									TInt32 axSPContactId,
+        							RPointerArray<MVPbkContactLink>& aPbkContactLinks ) const;
+		void GetMappedxSPContactsL( TUint32 aId,
+									const MVPbkContactLink& aPbkContactLink,
+        							RArray<TInt32>& axSPContactIds ) const;
+		void ViewActivatedL( const TVwsViewId& aPrevViewId,
+                         	 TUid aCustomMessageId,
+                         	const TDesC8& aCustomMessage );
+		const CPbk2ViewState* NamesListState() const;
+
+	public:
+
+		/**
+		 * Converts the given contact link to buffer
+		 *
+		 * @param aLink contact link to be converted
+		 *
+		 * @return the converted link as buffer
+		 */
+		static HBufC8* LinkToBufferL( const MVPbkContactLink* aLink );
+
+		/**
+		 * Converts the given data buffer to contact link
+		 *
+		 * @param aBuffer data buffer to be converted
+		 * @param aContactStores list of contact stores
+		 *
+		 * @return the converted data as contact link
+		 */
+		static MVPbkContactLink* BufferToLinkL( const TDesC8& aBuffer,
+									const MVPbkContactStoreList& aContactStores );
+
+    private: // Implementation
+
+    	/**
+         * Default constructor.
+         */
+        CxSPContactManager();
+
+        /**
+         * 2nd phase constructor.
+         *
+		 * @param aFactories Array of xSP factories
+		 * @param aVPbkContactManager Virtual phonebook contadct manager
+         */
+        void ConstructL( CArrayPtrFlat<MxSPFactory>& aFactories,
+        					CVPbkContactManager& aVPbkContactManager );
+
+  	private:
+
+  		/**
+         * 	Searches for contact mapping
+         *
+         *	@param aId xSP implementation ID
+         *	@param aPbkContactLink Phonebook contact link
+         *	@param axSPContactId xSP contact ID
+         *
+         *	@return index of mapping or KErrNotFound
+         */
+  		TInt FindMap( TUint32 aId,
+  					  const MVPbkContactLink& aPbkContactLink,
+  					  TInt32 axSPContactId ) const;
+
+  		/**
+  		 * Creates a new folder
+  		 *
+  		 * @param aSession File server session
+  		 * @param aPath path of the folder to be created
+  		 * @param aDrive Drive name to which the folder is to be created
+  		 *
+  		 * @return error code in case of error
+  		 */
+		TInt CreatePrivateFolder( RFs& aSession, TDes& aPath, TDriveNumber aDrive ) const;
+
+		/**
+		 * Saves the contact map data to a file
+		 *
+		 * @param aFileName file name to be used
+		 */
+		void SaveArrayL( const TDesC& aFileName );
+
+		/**
+		 * Restores the contact map data from file
+		 *
+		 * @param aFileName file name to be used for reading data
+		 * @param aFactories array of xSP factories available
+		 * @param aContactStoreList list of contact stores available
+		 */
+		void RestoreArrayL( const TDesC& aFileName,
+							CArrayPtrFlat<MxSPFactory>& aFactories,
+							MVPbkContactStoreList& aContactStoreList );
+
+    private: // data
+		/// Contact map to be used
+        RPointerArray<CxSPPbkContactMap> iContactMap;
+
+        /// Own: Current view state
+      	CPbk2ViewState* iState;
+    };
+
+
+
+#endif // __CXSPCONTACTMANAGER_H__
+
+// End of File