--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ccservices/cmsservices/cmsengine/Server/inc/cmsserverxspcontacthandler.h Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,178 @@
+/*
+* Copyright (c) 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:
+*
+*
+*/
+
+
+#ifndef __CMSSERVERXSPCONTACTHANDLER__
+#define __CMSSERVERXSPCONTACTHANDLER__
+
+// INCLUDES
+#include <e32base.h>
+#include "cmscontact.h"
+#include <VPbkEng.rsg>
+#include <badesca.h>
+#include <MVPbkBatchOperationObserver.h>
+#include <MVPbkContactFindFromStoresObserver.h>
+#include <MVPbkSingleContactOperationObserver.h>
+#include <CVPbkContactLinkArray.h>
+
+class MVPbkContactLink;
+class MVPbkStoreContact;
+class CCmsServerContact;
+class CCmsPhoneBookProxy;
+class CVPbkContactManager;
+class MVPbkContactLinkArray;
+class CCmsServerAsyncContact;
+class CCmsServerContactAttributes;
+class MPresenceTrafficLights;
+
+// CLASS DECLARATION
+NONSHARABLE_CLASS( CCmsServerXSPContactHandler ) : public CBase,
+ public MVPbkContactFindFromStoresObserver,
+ public MVPbkSingleContactOperationObserver
+ {
+ public:
+
+ /**
+ * Start the server thread
+ * @return TInt Error code
+ */
+ static CCmsServerXSPContactHandler* NewL( CCmsServerContact& aContact,
+ CCmsServer& aCmsServer );
+
+ /**
+ * Start the server thread
+ * @return TInt Error code
+ */
+ void SaveMessage( const RMessage2& aMessage );
+
+ /**
+ * Start the server thread
+ * @return TInt Error code
+ */
+ TInt ContactCount() const;
+
+ /**
+ * Start the server thread
+ * @return TInt Error code
+ */
+ MVPbkStoreContact* Contact( TInt aIndex ) const;
+
+ /**
+ * Start the server thread
+ * @return TInt Error code
+ */
+ void Cancel();
+
+ /**
+ * Start the server thread
+ * @return TInt Error code
+ */
+ virtual ~CCmsServerXSPContactHandler();
+
+ void NumberOfFinds( TInt aCount );
+ void NumberOfStoresInFind( TInt aStoresNumber );
+
+ private:
+
+ /**
+ * Start the server thread
+ * @return TInt Error code
+ */
+ CCmsServerXSPContactHandler( CCmsServerContact& aContact,
+ CCmsServer& aCmsServer );
+
+ private: //From MVPbkContactFindFromStoresObserver
+
+ /**
+ * This is called when one store completes its find. If this
+ * leaves then FindFromStoreFailed is called. Client takes
+ * the ownership of all results immediately!
+ *
+ * FindFromStoresOperationComplete is called after
+ * all stores have called either this or FindFromStoreFailed.
+ *
+ * @param aStore The store whose find results are available
+ * @param aResultsFromStore The find results from the store.
+ * Client takes the ownership immediately!
+ */
+ void FindFromStoreSucceededL( MVPbkContactStore& aStore, MVPbkContactLinkArray* aResultsFromStore );
+
+ /**
+ * Called when a find operation of one store fails. Doesn't stop
+ * the find from other stores in the case there are multiple stores.
+ *
+ * @param aStore The failed store.
+ * @param aError A system wide error code from the
+ * store implementation.
+ */
+ void FindFromStoreFailed( MVPbkContactStore& aStore, TInt aError );
+
+ /**
+ * This is called after all stores have called either
+ * FindFromStoreSucceed or FindFromStoreFailed. It's called
+ * also when there are no stores that offer find operation.
+ */
+ void FindFromStoresOperationComplete();
+
+ 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).
+ */
+ void VPbkSingleContactOperationComplete( MVPbkContactOperationBase& aOperation,
+ MVPbkStoreContact* aContact );
+
+ /**
+ * Called if the operation fails.
+ *
+ * @param aOperation the failed operation.
+ * @param aError error code of the failure.
+ */
+ void VPbkSingleContactOperationFailed( MVPbkContactOperationBase& aOperation, TInt aError );
+
+ private: //Data
+
+ TInt iCompletionCode;
+ TBool iActive;
+ RMessage2 iMessage;
+ CCmsServerContact& iServerContact;
+ RPointerArray<MVPbkStoreContact> iContactArray;
+ TInt iNumberOfFinds;
+ TInt iNumberOfCompletedFinds;
+ CVPbkContactLinkArray* iContactLinks;
+ TInt iNumberOfStoresInFind;
+ TInt iNumberOfCompletedStoresInFind;
+ CCmsServer& iCmsServer;
+ };
+
+#endif //__CMSSERVERXSPCONTACTHANDLER__
+
+
+// End of File