serviceproviders/sapi_contacts_vpbk/contactservice/inc/addcontactobserver.h
changeset 19 989d2f495d90
child 33 50974a8b132e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceproviders/sapi_contacts_vpbk/contactservice/inc/addcontactobserver.h	Fri Jul 03 15:51:24 2009 +0100
@@ -0,0 +1,219 @@
+/*
+* 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 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:  Observer to Add a contact to the contact store
+*
+*/
+
+
+#ifndef C_ADDCONTACTOBSERVER_H
+#define C_ADDCONTACTOBSERVER_H
+
+
+#include <s32file.h> 
+#include <mvpbkcontactstoreobserver.h>    
+#include <mvpbkcontactobserver.h>    
+#include <MVPbkSingleContactOperationObserver.h>
+#include <MVPbkStoreContact.h>
+
+#include "singlecontact.h"
+#include "cancelasyncrquest.h"
+
+class CVPbkContactManager;
+class MVPbkStoreContact;
+class MVPbkContactLink;
+class MContactCallback;
+class MCancelAsync;
+
+
+class CAddContactObserver : public CBase,
+   							public MVPbkContactStoreObserver,
+   							public MVPbkSingleContactOperationObserver,
+           		   			public MVPbkContactObserver,
+           		   			public MCancelAsync
+{
+	public:
+			/*
+			* called for creating an instace of add contact observer
+			*/
+    	static CAddContactObserver* NewL(CContactService* aContactService,
+										 MVPbkContactStore* aContactStore, 
+										 CSingleContact* aStoreContact,
+										 const TDesC8& aGroupId,
+										 const TDesC& aGroupLabel,
+										 TInt aTransId,
+										 MContactCallback* aCallback);
+			/*
+			* Destructor
+			*/
+    	~CAddContactObserver();
+    	
+    	/*
+    	 * Implementation of Cancel of MCancelAsync
+    	 */
+		void Cancel();
+	private:
+ 	   /*
+		* Constructor		*/
+	    CAddContactObserver(CContactService* aContactService,
+	    					MVPbkContactStore* aContactStore, 
+	    					CSingleContact* aStoreContact,	    				
+	    					TInt aTransId,
+	    					MContactCallback* aCallback);
+	    
+	   /*
+		* Symbian second-phase construction
+		*/
+		void ConstructL(const TDesC8& aGroupId,
+    				    const TDesC& aGroupLabel);
+	   
+	    /*
+	    * Called for adding a contact into the contacts database.
+	    */
+	    void DoAddL();
+	    
+	    /*
+	    * Called for committing a contact into the contacts database.
+	    */
+	    TInt DoCommitL(TContactOpResult aResult);
+	    
+	    void DoEditContactOrGroupL(MVPbkStoreContact* aContact);
+
+	private: // from MVPbkContactObserver
+
+	    /**
+	     * An indication that a contact operation has been completed.
+	     *
+	     * @param aResult The result of the operation.
+	     * @return None.
+	     */
+	    void ContactOperationCompleted( TContactOpResult aResult );
+
+	    /**
+	     * An indication that a contact operation has failed.
+	     *
+	     * @param aOpCode The operation identifier.
+	     * @param aErrorCode The error code.
+	     * @param aErrorNotified A flag indicating whether the user has been 
+	     *                       notified about the error.
+	     * @return None.
+	     */
+	    void ContactOperationFailed( TContactOp aOpCode, TInt aErrorCode,
+	        TBool aErrorNotified );
+	        
+	        
+	private: //MVPbkContactStoreObserver
+		/**
+         * Called when a contact store is ready to use.
+         */
+         void StoreReady( MVPbkContactStore& aContactStore );
+
+        /**
+         * Called when a contact store becomes unavailable.
+         * Client may inspect the reason of the unavailability and decide whether or not
+         * it will keep the store opened (ie. listen to the store events).
+         * @param aContactStore The store that became unavailable.
+         * @param aReason The reason why the store is unavailable.
+         *                This is one of the system wide error codes.
+         */
+         void StoreUnavailable( MVPbkContactStore& aContactStore, TInt aReason );
+
+        /**
+         * Called when changes occur in the contact store.
+         * @see TVPbkContactStoreEvent
+         * @param aContactStore The store the event occurred in.
+         * @param aStoreEvent   Event that has occured.
+         */
+        virtual void HandleStoreEventL( MVPbkContactStore& aContactStore, 
+                						TVPbkContactStoreEvent aStoreEvent );
+	
+	private: // from MVPbkSingleContactOperationObserver
+	    /**
+         * Called when operation is completed.
+         *
+         * @param aOperation the completed operation.
+         * @param aContact  the contact returned by the operation.
+         *                  Client must take the ownership immediately.
+         *
+         *                  !!! NOTICE !!!
+         *                  If you use Cleanupstack for MVPbkStoreContact
+         *                  Use MVPbkStoreContact::PushL or
+         *                  CleanupDeletePushL from e32base.h.
+         *                  (Do Not Use CleanupStack::PushL(TAny*) because
+         *                  then the virtual destructor of the M-class
+         *                  won't be called when the object is deleted).
+         */	    
+	    virtual void VPbkSingleContactOperationComplete(
+                							MVPbkContactOperationBase& aOperation,
+                							MVPbkStoreContact* aContact);
+			/**
+         * Called if the operation fails.
+         *
+         * @param aOperation    the failed operation.
+         * @param aError        error code of the failure.
+         */
+        virtual void VPbkSingleContactOperationFailed(
+                							MVPbkContactOperationBase& aOperation, 
+                							TInt aError);
+                							
+	private:
+	
+	void CreateAndAddFieldToContactL();
+	
+	public:
+		/*
+		* Pointer to a contact manager
+		*/
+		CContactService* iContactService;		
+		/*
+		* Pointer to a contact store
+		*/
+		MVPbkContactStore* iContactStore;
+		/*
+		* Pointer to a store contact
+		*/
+		CSingleContact* iStoreContact;
+		/*
+		* Pointer to a callback
+		*/
+		MContactCallback* iCallback;
+		/*
+		* Pointer to group id.
+		*/
+		HBufC8* iGroupId;
+		/*
+		* Pointer to group label
+		*/
+		HBufC* iGroupLabel;
+		/*
+		* Flag to indicate whether contact is locked or not
+		*/
+		TBool iLockFlag;
+		
+		/*
+	     * Transaction Id.
+	     */
+        TInt iTransId;
+        
+        TInt iErrorID;
+        //TPtrC iErrKey;
+        
+        MVPbkStoreContact* iContact;
+        MVPbkContactGroup* iGroup;
+
+        
+        //OperationBase pointer to be used to cancel async request
+        MVPbkContactOperationBase* iOp;
+};
+
+#endif //C_ADDCONTACTOBSERVER_H
\ No newline at end of file