phonebookengines/VirtualPhonebook/VPbkEng/inc/CVPbkxSPContactsOperation.h
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines/VirtualPhonebook/VPbkEng/inc/CVPbkxSPContactsOperation.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,146 @@
+/*
+* Copyright (c) 2005-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:  xSP Contact operation.
+*
+*/
+
+
+#ifndef VPBKXSPCONTACTSOPERATION_H
+#define VPBKXSPCONTACTSOPERATION_H
+
+// INCLUDES
+#include <e32base.h>
+#include <bamdesca.h>
+#include <badesca.h>
+#include <MVPbkContactOperationBase.h>
+#include <MVPbkContactFindFromStoresObserver.h>
+#include <MVPbkOperationObserver.h>
+
+// FORWARD DECLARATIONS
+class MVPbkContactLinkArray;
+class CVPbkContactLinkArray;
+class CVPbkContactManager;
+class MVPbkBaseContact;
+class MVPbkStoreContact;
+class MVPbkContactStore;
+class CVPbkFieldTypeRefsList;
+
+// CLASS DECLARATION
+
+/**
+ * Top contact manager operation. One class used for all operations, a new instance 
+ * is created for each client request.
+ */
+NONSHARABLE_CLASS( CVPbkxSPContactsOperation ) : public CActive,
+    public MVPbkContactOperationBase,
+    public MVPbkContactFindFromStoresObserver
+    {
+    public:
+        /**
+         * xSP contacts operation
+         */
+        enum TxSPOperation
+            {
+            EGetxSPContactLinks
+            };
+        
+    public:
+        /**
+         * Creates a xSP contact manager operation that returns a array of xsp contact links. 
+         * Used to fetch xSP contact links for contact.
+         * 
+         * @param aContactManager Contact manager which already has its stores opened.
+         * @param aObserver Receives array when it's ready
+         * @param aErrorObserver Error observer is notified in case of an error
+         * @param aOperation Valid values EGetxSPContactLinks
+         * 
+         * @return Contact operation handle 
+         */
+        static MVPbkContactOperationBase* NewGetxSPLinksOperationL(
+                const MVPbkStoreContact& aContact,
+                CVPbkContactManager& aContactManager,
+                MVPbkOperationResultObserver<MVPbkContactLinkArray*>& aObserver,
+                MVPbkOperationErrorObserver& aErrorObserver,
+                TxSPOperation aOperation );
+        
+        /**
+         * Destructor. Cancels any ongoing requests.
+         */ 
+        ~CVPbkxSPContactsOperation();
+        
+    private: //From CActive
+        void DoCancel();
+        void RunL();
+        TInt RunError( TInt aError );
+        
+    
+    private: //From MVPbkContactFindFromStoresObserver
+        void FindFromStoreSucceededL( MVPbkContactStore& aStore, 
+            MVPbkContactLinkArray* aResultsFromStore );
+        void FindFromStoreFailed( 
+                MVPbkContactStore& aStore, TInt aError );
+        void FindFromStoresOperationComplete();
+                
+    private: // construction        
+        static CVPbkxSPContactsOperation* NewLC(
+                const MVPbkStoreContact& aContact,
+                CVPbkContactManager& aContactManager,
+                MVPbkOperationErrorObserver& aErrorObserver,
+                TxSPOperation aOperation);
+        void ConstructL();
+        CVPbkxSPContactsOperation(
+                const MVPbkStoreContact& aContact,
+                CVPbkContactManager& aContactManager,
+                MVPbkOperationErrorObserver& aErrorObserver,
+                TxSPOperation aOperation);
+        
+    private: // new methods
+        void GetIMPPDataL( );
+        TBool FindUsingIdL();        
+        static TInt WordParserL( TAny* aWordParserParam );        
+        void ProcessContactLinksL( MVPbkContactLinkArray* aResultsFromStore );        
+        void CompleteOurself();
+        void NotifyResult();        
+        void SubsearchCompleteL();
+        void NotifyError(TInt aErr);
+        void AbortWithError(TInt aErr);
+                
+    private:        
+        enum TxSPManagementState
+            {
+            EStateNone,
+            EStateFind,
+            EStateAbortWithError
+            };
+        
+    private: // data
+        TxSPManagementState iNextState;
+        const MVPbkStoreContact& iContact; // not owned
+        MVPbkContactLink* iContactLink;  //own
+        CVPbkContactManager& iContactManager; // not owned
+        CVPbkFieldTypeRefsList*  iFieldTypeRefList; // owned
+        CVPbkContactLinkArray* iContactLinks; // owned
+        MVPbkContactOperationBase* iContactOperation; // own
+        CDesCArrayFlat* iXspIdArray; // own        
+        
+        // observers, not owned
+        MVPbkOperationResultObserver<MVPbkContactLinkArray*>* iLinksObserver;
+        MVPbkOperationErrorObserver* iErrorObserver;
+        TInt iAbortError;
+        TInt iNextXspId;
+    };
+
+#endif //VPBKXSPCONTACTSOPERATION_H
+
+//End of file