diff -r e1b950c65cb4 -r 837f303aceeb epoc32/include/app/MVPbkContactOperationFactory.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/app/MVPbkContactOperationFactory.h	Wed Mar 31 12:33:34 2010 +0100
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2004-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:  Virtual Phonebook factory interface for asynchronous 
+*                contact operations.
+*
+*/
+
+// 
+
+#ifndef MVPBKCONTACTOPERATIONFACTORY_H
+#define MVPBKCONTACTOPERATIONFACTORY_H
+
+// INCLUDES
+#include <e32cmn.h>
+#include <bamdesca.h>
+
+// FORWARD DECLARATIONS
+class MVPbkContactOperation;
+class MVPbkContactLink;
+class MVPbkContactLinkArray;
+class MVPbkStoreContact;
+class MVPbkSingleContactOperationObserver;
+class MVPbkBatchOperationObserver;
+class MVPbkContactFindObserver;
+class MVPbkFieldTypeList;
+class MVPbkContactFindFromStoresObserver;
+
+// CLASS DECLARATIONS
+
+/**
+ * A factory interface for asynchronous contact operations.
+ * This interface is used to create contact operations.
+ */
+class MVPbkContactOperationFactory
+    {
+    public:  // Factories
+        /**
+         * Creates an operation for contact retrieval.
+         *
+         * @param aLink A link to the contact
+         * @param aObserver An observer for the operation.
+         * @return A handle to the operation or NULL if the factory
+         *         doesn't have reference to the store of the link.
+         */
+        virtual MVPbkContactOperation* CreateContactRetrieverL(
+                const MVPbkContactLink& aLink,
+                MVPbkSingleContactOperationObserver& aObserver) =0;
+
+        /**
+         * Creates an operation for deleting multiple contacts.
+         *
+         * @param aContactLinks An array of contact links that specify 
+         *                      the contacts.
+         * @param aObserver An observer for the operation.
+         * @return A handle to the operation or NULL
+         */
+        virtual MVPbkContactOperation* CreateDeleteContactsOperationL(
+                const MVPbkContactLinkArray& aContactLinks, 
+                MVPbkBatchOperationObserver& aObserver ) =0;
+
+        /**
+         * Creates an operation for committing multiple contacts.
+         *
+         * @param aContacts An array of contact links that specify
+         *                  the contacts
+         * @param aObserver An observer for the operation.
+         * @return A handle to the operation or NULL
+         */
+        virtual MVPbkContactOperation* CreateCommitContactsOperationL(
+                const TArray<MVPbkStoreContact*>& aContacts,
+                MVPbkBatchOperationObserver& aObserver) =0;
+
+        /**
+         * Creates an operation for asynchronous phone number matching.
+         * 
+         * @param aPhoneNumber  A phone number to search for.
+         * @param aMaxMatchDigits   Maximum number of digits to match from 
+         *                          the end of the number.
+         * @param aObserver Observer for the find process.
+         * @return A handle to the operation or NULL
+         */
+        virtual MVPbkContactOperation* CreateMatchPhoneNumberOperationL(
+                const TDesC& aPhoneNumber, 
+                TInt aMaxMatchDigits,
+                MVPbkContactFindObserver& aObserver) =0;
+
+        /**
+         * Creates an operation for asynchronous contact finding.
+         *
+         * @param aSearchString String to search for.
+         * @param aFieldTypes   List of field types that the search will include.
+         * @param aObserver Observer for the find process.
+         * @return A handle to the operation or NULL
+         */
+        virtual MVPbkContactOperation* CreateFindOperationL(
+                const TDesC& aSearchString,
+                const MVPbkFieldTypeList& aFieldTypes,
+                MVPbkContactFindObserver& aObserver) =0;
+        
+        /**
+         * Creates an operation for asynchronous contact finding.
+         * Finds a string containing text that is stored in one or more fields.
+         * Client can give multiple find words. All the words must match to separated
+         * data. E.g if there are two find words: "Jo" and "Jo" then field data
+         * "John Johnson" matches but "John Doe" doesn't if the word parser uses
+         * white space as a word separator.
+         *
+         * NOTE: The accuracy of the results depends on the ability of the store
+         *       implementation to implement the find. The performance can vary
+         *       too depending on the store. 
+         *
+         * @param aSearchStrings    Words that are compared to field data.
+         * @param aFieldTypes   Types of the fields that are used.
+         * @param aObserver An observer for asynchronous operation.
+         * @param aWordParserCallBack a client implementation of word parser 
+         *                            function that separates the field data 
+         *                            into words. Parameter to function is 
+         *                            TVPbkWordParserParam.
+         * @return A handle to the operation or NULL
+         */
+        virtual MVPbkContactOperation* CreateFindOperationL(
+                const MDesC16Array& aSearchStrings, 
+                const MVPbkFieldTypeList& aFieldTypes, 
+                MVPbkContactFindFromStoresObserver& aObserver, 
+                const TCallBack& aWordParserCallBack ) =0;
+            
+        /**
+         * Creates an operation for compressing the store.
+         *
+         * @param aObserver An observer for the compress operation.
+         * @return A handle to the operation or NULL
+         */
+        virtual MVPbkContactOperation* CreateCompressStoresOperationL(
+        		MVPbkBatchOperationObserver& aObserver) = 0;
+
+        /**
+         * Returns an extension point for this interface or NULL.
+         * @param aExtensionUid Uid of extension.
+         * @return Extension point or NULL.
+         */
+        virtual TAny* ContactOperationFactoryExtension(
+                TUid /*aExtensionUid*/) { return NULL; }
+    };
+
+#endif // MVPBKCONTACTOPERATIONFACTORY_H
+
+// End of File