williamr@2: /* williamr@2: * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: williamr@2: * A class to convert Phonebook items to vCard stream and vice versa williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef __BCARDENG_H__ williamr@2: #define __BCARDENG_H__ williamr@2: williamr@2: williamr@2: // INCLUDES williamr@2: #include // CDesCArrayFlat williamr@2: #include "PbkFields.hrh" // TPbkFieldId williamr@2: williamr@2: williamr@2: // CONSTANTS williamr@2: _LIT(KPbkvCardFileExtension, ".vcf"); williamr@2: williamr@2: // FORWARD DECLARATIONS williamr@2: class CPbkContactEngine; williamr@2: class CPbkContactItem; williamr@2: class RWriteStream; williamr@2: class CBCardFieldUidMapping; williamr@2: class CBCardExportProperty; williamr@2: class CParserVCard; williamr@2: williamr@2: // CLASS DECLARATION williamr@2: williamr@2: /** williamr@2: * The business card engine is able to import and export vCards and Compact williamr@2: * Business Cards to and from Phonebook. williamr@2: */ williamr@2: class CBCardEngine : public CBase williamr@2: { williamr@2: public: // Constructors and destructor williamr@2: /** williamr@2: * Creates a new instance of this class. williamr@2: * @param aEngine An open Phonebook Engine object which CBCardEngine williamr@2: * uses to import and export vCard data. williamr@2: */ williamr@2: IMPORT_C static CBCardEngine* NewL(CPbkContactEngine* aEngine); williamr@2: williamr@2: /** williamr@2: * Destructor williamr@2: */ williamr@2: IMPORT_C ~CBCardEngine(); williamr@2: williamr@2: public: // The main public interface williamr@2: /** williamr@2: * Reads a vCard record from a stream into a Phonebook contact williamr@2: * item. williamr@2: * @param aDestItem Phonebook contact item where the information williamr@2: * should be written to. The item should be writable. The williamr@2: * caller should commit the changes. williamr@2: * @param aSourceStream A stream where the vCard data is read from williamr@2: */ williamr@2: IMPORT_C void ImportBusinessCardL(CPbkContactItem& aDestItem, williamr@2: RReadStream &aSourceStream); williamr@2: williamr@2: /** williamr@2: * Writes a vCard record with information from a Phonebook contact williamr@2: * item. williamr@2: * @param aDestStream A stream where the vCard data is written to. williamr@2: * The data written to the stream is not Committed by this method. williamr@2: * @param aSourceItem Phonebook contact item where the information williamr@2: * should be read from williamr@2: */ williamr@2: IMPORT_C void ExportBusinessCardL(RWriteStream& aDestStream, williamr@2: CPbkContactItem& aSourceItem); williamr@2: williamr@2: /** williamr@2: * Reads a Compact Business Card record from a stream into a Phonebook williamr@2: * contact item. williamr@2: * @param aDestItem Phonebook contact item where the information williamr@2: * must be written to. The item must be writable. williamr@2: * The caller should commit the changes. williamr@2: * @param aSourceStream A stream where the Compact Business Card williamr@2: * is read from williamr@2: * @return ETrue on success williamr@2: */ williamr@2: IMPORT_C TBool ImportCompactBusinessCardL(CPbkContactItem& aDestItem, williamr@2: RReadStream &aSourceStream); williamr@2: williamr@2: /** williamr@2: * Checks if given field is supported by the vCard format williamr@2: * @param aFieldId Field id type williamr@2: * @return ETrue if given field is supported, EFalse otherwise williamr@2: */ williamr@2: IMPORT_C TBool SupportsFieldType(TPbkFieldId aFieldId); williamr@2: williamr@2: private: // Constructors williamr@2: CBCardEngine(); williamr@2: void ConstructL(CPbkContactEngine* aEngine); williamr@2: williamr@2: private: // Private utility methods williamr@2: void ProcessExportPropertyL( williamr@2: CParserVCard& aParser, williamr@2: CPbkContactItem& aSourceItem, williamr@2: const CBCardExportProperty& aExportProperty); williamr@2: TInt GetLineFromStreamL(TDes& aBuf, RReadStream& aSourceStream); williamr@2: TInt GetByteFromStream(TUint8& aByte, RReadStream& aSourceStream); williamr@2: class CBCardFieldAction; williamr@2: williamr@2: private: williamr@2: /// Own: Filename for picture williamr@2: HBufC* iPictureFileName; williamr@2: /// Own: Filename for thumbnail williamr@2: HBufC* iThumbnailFileName; williamr@2: /// Own: Instance for property name-Uid mapping williamr@2: CBCardFieldUidMapping* iNameUidMap; williamr@2: /// Own: Instance for contact field handling williamr@2: CBCardFieldAction* iFieldAction; williamr@2: /// Ref: Phonebook engine williamr@2: CPbkContactEngine* iEngine; williamr@2: /// Own: Array of CBCardExportProperty instances for exporting contact williamr@2: RPointerArray iExportProperties; williamr@2: }; williamr@2: williamr@2: #endif // __BCARDENG_H__ williamr@2: williamr@2: // End of File