diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/CommandsExtension/inc/CPbk2vCardConverter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/CommandsExtension/inc/CPbk2vCardConverter.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,224 @@ +/* +* 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: Phonebook 2 vCard converter. +* +*/ + + +#ifndef CPBK2VCARDCONVERTER_H +#define CPBK2VCARDCONVERTER_H + +// INCLUDES +#include "MPbk2vCardConverterObserver.h" +#include // RFileWriteStream +#include + +// FORWARD DECLARATIONS +class CVPbkContactManager; +class MVPbkStoreContact; +class MVPbkBaseContactField; +class CVPbkVCardEng; +class CPbk2AttachmentFile; +class CPbk2AttachmentFileArray; +class MDesC16Array; +class MPbk2ContactNameFormatter; +class MPbk2ContactLinkIterator; + +// DATA DECLARATION + +/** + * Represents the different 'sending selected detail' menu selections. + */ +enum TPbk2SendvCardChoiceItemEnumerations + { + ESendCurrentItem = 0, + ESendAllData, + ESendAllDataWithoutPicture, + ECancel + }; + +// CLASS DECLARATION +/** + * Phonebook 2 vCard converter. + * Responsible for converting contacts to vCards.. + */ +NONSHARABLE_CLASS(CPbk2vCardConverter) : + public CActive, + public MVPbkSingleContactOperationObserver + { + public: // Construction and destruction + + /** + * Creates a new instance of this class. + * + * @param aFs File server handle. + * @param aEngine Virtual Phonebook contact manager. + * @param aVCardEngine Business card engine. + * @param aNameFormatter Contact name formatter. + * @return A new instance of this class + */ + static CPbk2vCardConverter* NewL( + RFs& aFs, + CVPbkContactManager& aEngine, + CVPbkVCardEng& aVCardEngine, + MPbk2ContactNameFormatter& aNameFormatter ); + + /** + * Destructor. + */ + ~CPbk2vCardConverter(); + + public: // Interface + + /** + * Initializes this process to convert given contact to a vCard file. + * + * @param aContacts Contact to convert. + * @param aField Focused field of the contact (can be null). + * @param aDataToSend The data to send mapped into + * TPbk2SendvCardChoiceItemEnumerations. + * @param aObserver Observer. + */ + void ConvertContactL( + const TArray aContacts, + const MVPbkBaseContactField* aField, + TInt aDataToSend, + MPbk2vCardConverterObserver& aObserver ); + + /** + * Initializes this process to convert given contacts to vCard files. + * + * @param aContacts Contacts to convert. + * @param aDataToSend The data to send mapped into + * TPbk2SendvCardChoiceItemEnumerations. + * @param aObserver Observer. + */ + void ConvertContactsL( + const TArray aContacts, + TInt aDataToSend, + MPbk2vCardConverterObserver& aObserver ); + + /** + * Initializes this process to convert given contacts to vCard files. + * + * @param aIterator Contact link iterator. + * @param aDataToSend The data to send mapped into + * TPbk2SendvCardChoiceItemEnumerations. + * @param aObserver Observer. + */ + void ConvertContactsL( + MPbk2ContactLinkIterator& aIterator, + TInt aDataToSend, + MPbk2vCardConverterObserver& aObserver ); + + /** + * Returns the created vCard file names when the process is finished. + * + * @return vCard file names. + */ + MDesC16Array& FileNames() const; + + /** + * Resets the process and destroys any results generated. + */ + void Reset(); + + /** + * Returns attachment file array. + * + * @return Attachment file array. + */ + CPbk2AttachmentFileArray& AttachmentFileArray(); + + private: // From CActive + void RunL(); + void DoCancel(); + TInt RunError( + TInt aError ); + + private: // From MVPbkSingleContactOperationObserver + void VPbkSingleContactOperationComplete( + MVPbkContactOperationBase& aOperation, + MVPbkStoreContact* aContact ); + void VPbkSingleContactOperationFailed( + MVPbkContactOperationBase& aOperation, + TInt aError ); + + private: // Implementation + CPbk2vCardConverter( + RFs& aFs, + CVPbkContactManager& aEngine, + CVPbkVCardEng& aBCardEngine, + MPbk2ContactNameFormatter& aNameFormatter ); + void ConstructL(); + void CreatevCardFileL( + MVPbkStoreContact* aContact ); + MVPbkStoreContact* PrepareContactL( + MVPbkStoreContact* aContact ); + void FillTemporaryContactL( + MVPbkStoreContact& aDestContact, + const MVPbkStoreContact& aSourceContact, + const MVPbkBaseContactField& aSourceField ) const; + void AddFieldToContactL( + MVPbkStoreContact& aDestItem, + const MVPbkBaseContactField& aSourceField ) const; + void Start(); + void HandleNextContactL( + MVPbkStoreContact* aContact ); + void IssueRequest(); + void FinalizeVCardExport(); + + private: // Data + /// Ref: Open file server session + RFs& iFs; + /// Ref: Virtual Phonebook contact manager + CVPbkContactManager& iEngine; + /// Ref: Business card engine + CVPbkVCardEng& iVCardEngine; + /// Own: Array of vCard files + CPbk2AttachmentFileArray* iVcardFiles; + /// Own: Contacts to convert + RPointerArray iContacts; + /// Ref: Contact name formatter + MPbk2ContactNameFormatter& iNameFormatter; + /// Ref: The field to send, can be null + const MVPbkBaseContactField* iField; + /// Own: The data to send + /// (mapped into TPbk2SendvCardChoiceItemEnumerations) + TInt iDataToSend; + /// Ref: Observer + MPbk2vCardConverterObserver* iObserver; + /// Own: Contact operation handle + MVPbkContactOperationBase* iContactOperation; + /// Own: Temp contact with fields to be sended + MVPbkStoreContact* iVCardContact; + /// Own: vCard file + CPbk2AttachmentFile* iVCardFile; + /// Own: File stream for vCard file writing + RFileWriteStream iFileWriteStream; + /// Own: Index of currently converted contact + TInt iOpIndex; + /// Own: Flag indicating is this field level operation + TBool iFieldLevelOperation; + /// Own: Flag indicating that the file writer has tried next drive + TBool iNextDriveTried; + /// Ref: Reference to selected contacts' iterator + MPbk2ContactLinkIterator* iIterator; + /// Own: Contact retrieve operation + MVPbkContactOperationBase* iRetrieveOperation; + }; + +#endif // CPBK2VCARDCONVERTER_H + +// End of File