contacts_plat/predictivesearch_client_api/tsrc/PsClientTestSuite/inc/pstestcontactshandler.h
branchRCL_3
changeset 63 f4a778e096c2
child 64 c1e8ba0c2b16
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contacts_plat/predictivesearch_client_api/tsrc/PsClientTestSuite/inc/pstestcontactshandler.h	Wed Sep 01 12:29:52 2010 +0100
@@ -0,0 +1,346 @@
+/*
+* Copyright (c) 2006-2007 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:  Contacts handler for client API test suite
+*
+*/
+
+
+#ifndef C_PHONE_CONTACTS_FETCHER_H
+#define C_PHONE_CONTACTS_FETCHER_H
+
+//SYSTEM INCLUDES
+#include <f32file.h>
+#include <badesca.h>
+#include <e32std.h>
+#include <e32cmn.h>
+#include <mvpbkcontactstorelistobserver.h>
+#include <MVPbkContactObserver.h>
+#include <MVPbkBatchOperationObserver.h>
+#include <CPSRequestHandler.h>
+#include<eikenv.h>
+#include<coemain.h>
+
+//USER INCLUDES
+#include "psclienttestsuitedefs.h"
+
+// FORWARD DECLARATIONS
+class CVPbkContactManager;
+class CVPbkContactStoreUriArray;
+class CVPbkContactLinkArray;
+class MVPbkContactOperationBase;
+class MVPbkContactLinkArray;
+class MVPbkBaseContact;
+class CVPbkFieldTypeRefsList;
+
+/**
+ *  This class performs all the operation related to the virtual phonebook
+ *
+ *  @since S60 v3.2
+ */
+class CPcsTestContactsHandler: public CActive,
+                        public MVPbkContactStoreListObserver ,
+                        public MVPbkContactObserver,
+                        public MVPbkBatchOperationObserver
+{	
+public:
+
+    /**
+    * 1st phase constructor 
+    *
+  	* @return returns pointer to the constructed object of type CPcsContactFetch
+	*/
+	static CPcsTestContactsHandler* NewL(TBool SimStoreOnly=EFalse);
+	
+    /**
+    * Destructor
+    * 
+    */
+    virtual ~CPcsTestContactsHandler();
+   
+public:
+
+//From CActive
+
+    /**
+	* From CActive
+	* Implements cancellation of an outstanding request.
+	*
+	* This function is called as part of the active object's Cancel().
+	*/
+	void DoCancel(); 
+	
+	/**
+	* From CActive
+	* Handles an active object's request completion event.
+	*
+	* The function is called by the active scheduler when a request
+	* completion event occurs, i.e. after the active scheduler's
+	* WaitForAnyRequest() function completes.
+	*
+	* Before calling this active object's RunL() function, the active scheduler 
+	* has:
+	* 	
+	* 1. decided that this is the highest priority active object with
+	*   a completed request
+	*
+	* 2. marked this active object's request as complete (i.e. the request is no 
+	*   longer outstanding)
+	*
+	* RunL() runs under a trap harness in the active scheduler. If it leaves,
+	* then the active scheduler calls RunError() to handle the leave.
+	*
+	* Note that once the active scheduler's Start() function has been called, 
+	* all user code is run under one of the program's active object's RunL() or 
+	* RunError() functions.
+	*/
+	void RunL() ;
+
+	/**
+	* From CActive 
+	* If the RunL function leaves,
+	* then the active scheduler calls RunError() to handle the leave.
+	* @param aError - The error code
+	*/
+	TInt RunError(TInt aError) ;
+
+// From base class MVPbkContactStoreListObserver
+
+	/**
+	* From MVPbkContactStoreListObserver  
+	* Called when the opening process is complete, ie. all stores have been reported
+	* either failed or successfully opened.
+	*
+	*/
+	void OpenComplete();  
+
+	/**
+	* From MVPbkContactStoreListObserver  
+	* Called when a contact store is ready to use.
+	*/
+	void StoreReady(MVPbkContactStore& aContactStore);
+
+	/**
+	* From MVPbkContactStoreListObserver  
+	* 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);
+
+	/**
+	* From MVPbkContactStoreListObserver  
+	* Called when changes occur in the contact store.
+	* @see TVPbkContactStoreEvent
+	*
+	* @param aContactStore The store the event occurred in.
+	* @param aStoreEvent   Event that has occured.
+	*/
+	void HandleStoreEventL(MVPbkContactStore& aContactStore, TVPbkContactStoreEvent aStoreEvent);
+
+	/**
+	* From MVPbkContactObserver
+	* Called when a contact operation has succesfully completed.
+	*
+	* @param aResult   The result of the operation. 
+	*/
+	void ContactOperationCompleted(TContactOpResult aResult);
+
+	/**
+	* From MVPbkContactObserver
+	* Called when a contact operation has failed.
+	*
+	* @param aOpCode           The operation that failed.
+	* @param aErrorCode        System error code of the failure.
+	*							KErrAccessDenied when EContactCommit 
+	*							means that contact hasn't been locked.
+	* @param aErrorNotified    ETrue if the implementation has already
+	*                          notified user about the error, 
+	*                          EFalse otherwise. 
+	*/
+	void ContactOperationFailed(TContactOp aOpCode, TInt aErrorCode, TBool aErrorNotified);
+
+	/**
+	* From MVPbkBatchOperationObserver
+	* Called when one step of the operation is completed.
+	*
+	* @param aOperation Operation whose step has completed
+	* @param aStepSize Size of the performed step
+	*/
+	void StepComplete(MVPbkContactOperationBase& aOperation, TInt aStepSize );
+
+// From MVPbkBatchOperationObserver
+
+	/**
+	* From MVPbkBatchOperationObserver
+	* Called when one step of the operation fails.
+	*
+	* @param aOperation Operation whose step has failed
+	* @param aStepSize Size of the performed step
+	* @param aError Error that occured
+	* @return ETrue if the batch operation should continue, 
+	*               EFalse otherwise
+	*         NOTE! If returning ETrue the operation can NOT be deleted.
+	*               Operation should be deleted in OperationCompleted() 
+	*               function.
+	*               If returning EFalse the operation can be deleted
+	*               safely.
+	*/
+	TBool StepFailed(MVPbkContactOperationBase& aOperation, TInt aStepSize, TInt aError );
+
+	/**
+	* From MVPbkBatchOperationObserver
+	* Called when operation is completed.
+	* This is called when all steps are executed. If EFalse is returned
+	* in StepFailed() call this function is NOT called.
+	*
+	* @param aOperation    the completed operation
+	*/
+	void OperationComplete(MVPbkContactOperationBase& aOperation );
+	    
+public:                
+
+	/**
+	* Creates one contact in the phonebook
+	*
+	* @param aInputCacheData - The contacts data
+	*/
+	void CreateOneContactL(cacheData& aInputCacheData);    
+	
+	/**
+	* Deletes one contact in the phonebook
+	*
+	* @param aContactId - The contact id to be deleted
+	*/
+	void DeleteOneContactL(TInt aContactId);
+	
+	/**
+	* Deletes all the contacts from the phonebook
+	*
+	*/
+	void DeleteAllCreatedContactsL();
+
+	/**
+	* Adds a group to the phonebook
+	*
+	*/  
+	void AddGroupL(const TDesC& aGroupName);
+
+	/**
+	* Deletes contacts from the phonebook 
+	*
+	* @param aContactIdArray - The array of contact ids to be deleted
+	*/
+	void DeleteContactsWithIdsL(RArray<TInt>& aContactIdArray);
+	
+	/**
+    * Tests if Id returns correct vpbklink
+    * 
+    * @param aPsClientHandler -  PsClientHandler instance
+    * @param srchId -  Id to be tested\
+    * @return - ETrue if Id returns correct link, else EFalse
+    */
+    TBool TestVpbkLinkForIdL(CPSRequestHandler& aPsClientHandler,
+    												const CPsClientData& aSearchResult);
+	/**
+    *  Adds contacts to the group
+    * 
+    */
+
+    void AddCreatedContactsToGroup();
+
+private:	
+
+    /**
+    * Constructor
+    */
+    CPcsTestContactsHandler();
+    
+    /** 
+    * 2nd phase constructor
+    *
+    * @param SimStoreOnly
+    */
+    void ConstructL(TBool SimStoreOnly=EFalse);
+  
+    /**
+	* Stop mail scheduler if all stop conditions are fulfilled
+	*/
+    void StopSchedulerIfNothingToWaitFor();
+    
+private: // Data
+    
+    // Flags for  store operations
+    TBool iAtLeastOneStoreReady;
+    TBool iOpenComplete;
+    TBool iOperationComplete;
+    
+    /*
+    * The contact manager
+    */
+    CVPbkContactManager*  iContactManager;
+    
+    /*
+    * The store contact
+    */
+    MVPbkStoreContact* iStoreContact;
+    
+    /*
+    * The contact store
+    */
+    MVPbkContactStore* iStore;
+    
+    /*
+    * The field type reference list
+    */
+    CVPbkFieldTypeRefsList* fieldTypeRefList;
+    
+    /*
+	* The array of contactlinks to be deleted
+	*/
+    CVPbkContactLinkArray* iContactLinksToDelete;
+    
+    /*
+	* The contact operation base
+	*/
+    MVPbkContactOperationBase* iOp;
+    
+    /*
+	* The array of contact links of the created contacts
+	*/
+    CVPbkContactLinkArray *iContactsCreatedLinks;
+    CVPbkContactLinkArray * iContactLinksToAddToGroup;
+	
+	/*
+	* The contact group being added
+	*/
+    MVPbkContactGroup* iGroupAdded;
+
+	/*
+	* The Active scheduler wait
+	*/
+    CActiveSchedulerWait*	iWait;
+    
+    /*
+	* Test should be ended if store event in this variable didn't come
+    */
+	TInt iStoreEventToWaitFor;//will be compared to TVPbkContactStoreEvent::TVPbkContactStoreEventType
+    TBool iExpectedStoreEventReceived;
+    
+};
+
+#endif //C_PHONE_CONTACTS_FETCHER_H