diff -r e1b950c65cb4 -r 837f303aceeb epoc32/include/app/CVPbkContactCopier.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/epoc32/include/app/CVPbkContactCopier.h Wed Mar 31 12:33:34 2010 +0100 @@ -0,0 +1,103 @@ +/* +* 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: Virtual Phonebook contact copier +* +*/ + + +#ifndef CVPBKCONTACTCOPIER_H +#define CVPBKCONTACTCOPIER_H + +#include + +class MVPbkContactOperationBase; +class MVPbkContactLinkArray; +class MVPbkContactStore; +class MVPbkBatchOperationObserver; +class CVPbkContactManager; +class CVPbkContactLinkArray; + +/** + * Virtual Phonebook contact copier. Copies source + * contacts to the target store according to copying rules. + * + * @lib VPbkEng.lib + */ +class CVPbkContactCopier : public CBase + { + public: + /** + * A set of flags for copying. Fastest copy is EVPbkSimpleContactCopy. + */ + enum TVPbkContactCopyFlags + { + /// Copies a field if the target store supports the field type. + /// Does not perform additional checks. + EVPbkSimpleContactCopy = 0, + /// Uses a store specific copy policy if found for the target store. + /// Can do e.g field type conversion between source and target field + /// types. Falls back to simple copy if the copy policy was not found + /// for the store. + EVPbkUseStoreSpecificCopyPolicy = 0x01, + /// Finds duplicates before saving a contact if there is a copy policy + /// for the store that can handle the possible merge of + /// new and existing contact data. Falls back to simple copy if + /// the copy policy was not found for the store. + EVPbkUsePlatformSpecificDuplicatePolicy = 0x02 + }; + + /** + * Creates a new copier instance. Remember to open the stores first + * before starting any copy operation. + * + * @param aContactManager The contact manager for getting stores. + * @return A new instance of this class + */ + IMPORT_C static CVPbkContactCopier* NewL( + CVPbkContactManager& aContactManager ); + + /** + * Destructor. + */ + ~CVPbkContactCopier(); + + /** + * Copies a set of contacts to the target store. + * + * @param aContactCopyFlags A set of TVPbkContactCopyFlags + * @param aSourceContactLinks Source contact links + * @param aTargetStore Target of the copy operation. + * If NULL this behaves like duplicate. + * @param aCopiedContactLinks The results of the copy. Copied contacts + * are added to this array. + * @param aObserver An observer for asynchronous operation + * @return A copy contact operation + */ + IMPORT_C MVPbkContactOperationBase* CopyContactsL( + TUint32 aContactCopyFlags, + const MVPbkContactLinkArray& aSourceContactLinks, + MVPbkContactStore* aTargetStore, + CVPbkContactLinkArray& aCopiedContactLinks, + MVPbkBatchOperationObserver& aObserver ); + + private: + + CVPbkContactCopier( CVPbkContactManager& aContactManager ); + + private: // data + /// Ref: The contact manager for accessing stores + CVPbkContactManager& iContactManager; + }; + +#endif // CVPBKCONTACTCOPIER_H