contacts_plat/predictivesearch_client_api/tsrc/PsClientTestSuite/inc/pstestcontactshandler.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contacts_plat/predictivesearch_client_api/tsrc/PsClientTestSuite/inc/pstestcontactshandler.h Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,350 @@
+/*
+* 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