williamr@2: // Copyright (c) 1997-2009 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: // williamr@2: williamr@2: #if !defined(__CNTFLDST_H__) williamr@2: #define __CNTFLDST_H__ williamr@2: williamr@2: #if !defined(__E32BASE_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined(__BAMDESCA_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined(__S32STD_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined(__CNTDEF_H__) williamr@2: #include williamr@2: #endif williamr@2: #define KTextStreamSeparator 0x00 williamr@2: williamr@2: williamr@2: williamr@2: class CStreamStore; williamr@2: williamr@2: class CContactFieldStorage : public CBase williamr@2: /** Abstract base class for the different types of contact field data storage. williamr@2: williamr@2: CContactTextField, CContactStoreField, CContactAgentField, CContactDateField williamr@2: and CContactNumberField are all derived from this class. williamr@2: williamr@2: A pointer to the base class can be obtained by calling CContactItemField::Storage(). williamr@2: Pointers to the derived classes can be retrieved by calling CContactItemField::TextStorage(), williamr@2: CContactItemField::StoreStorage() etc. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: /** Internalises the field data. williamr@2: williamr@2: @param aStream Stream from which the the contents of the field should be internalised. */ williamr@2: virtual void InternalizeL( RReadStream& aStream)=0; williamr@2: /** Externalises the field data. williamr@2: williamr@2: @param aStream Write stream to which the contents of the field should be externalised. */ williamr@2: virtual void ExternalizeL(RWriteStream& aStream) const=0; williamr@2: /** Stores the field data. williamr@2: williamr@2: @param aStore Reference to the stream store to which the field data is written. williamr@2: @return The ID of the stream store. */ williamr@2: virtual TStreamId StoreL(CStreamStore& aStore) const=0; williamr@2: /** Restores the field data. williamr@2: williamr@2: @param aStore Reference to the store from which the object is to be restored. williamr@2: @param aStream Reference to the stream which should be passed to InternalizeL(). */ williamr@2: virtual void RestoreL(CStreamStore& aStore,RReadStream& aStream)=0; williamr@2: /** Tests whether the field storage contains data. williamr@2: williamr@2: @return True if the field storage contains data, false if not. */ williamr@2: virtual TBool IsFull() const=0; williamr@2: private: williamr@2: IMPORT_C virtual void CContactFieldStorage_Reserved1(); williamr@2: TAny* CContactFieldStorage_Reserved; williamr@2: }; williamr@2: williamr@2: class CContactTextField : public CContactFieldStorage williamr@2: /** Provides access to the text stored in a contact item field. williamr@2: williamr@2: An object of this class can be retrieved using CContactItemField::TextStorage(). williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C ~CContactTextField(); williamr@2: public: williamr@2: void InternalizeL(HBufC *aTextStream,TInt aTextFieldIndex); williamr@2: void InternalizeL(RReadStream& aStream); williamr@2: void ExternalizeL(RWriteStream& aStream) const; williamr@2: void ExternalizeL(RWriteStream& aStream,TBool aIsInlineBlob,TInt aTextFieldIndex) const; williamr@2: TStreamId StoreL(CStreamStore& aStore) const; williamr@2: void RestoreL(CStreamStore& aStore,RReadStream& aStream); williamr@2: IMPORT_C void SetTextL(const TDesC& aText); williamr@2: IMPORT_C void SetText(HBufC *aHbuf); williamr@2: IMPORT_C void SetTextArray(MDesCArray* anArray); williamr@2: IMPORT_C TPtrC Text() const; williamr@2: TBool IsFull() const; williamr@2: IMPORT_C TPtrC StandardTextLC() const; williamr@2: IMPORT_C void SetStandardTextL(const TDesC& aText); williamr@2: IMPORT_C void SetStandardTextArray(MDesCArray* anArray); williamr@2: private: williamr@2: HBufC *EncodeL(const TDesC& aText,TUid aConversion) const; williamr@2: IMPORT_C /*virtual*/ void CContactFieldStorage_Reserved1(); williamr@2: private: williamr@2: HBufC* iText; williamr@2: }; williamr@2: williamr@2: class CContactStoreField : public CContactFieldStorage williamr@2: /** Provides access to the binary field data stored in an 8-bit descriptor. williamr@2: williamr@2: An object of this class can be retrieved using CContactItemField::StoreStorage(). williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: ~CContactStoreField(); williamr@2: TStreamId StoreL(CStreamStore& aStore) const; williamr@2: void RestoreL(CStreamStore& aStore,RReadStream& aStream); williamr@2: IMPORT_C void SetThingL(const TDesC8& aDes); williamr@2: IMPORT_C void SetThingL(const HBufC8& aDes); williamr@2: IMPORT_C void SetThingL(const CBufBase* aBuf); williamr@2: IMPORT_C HBufC8* Thing() const; williamr@2: void InternalizeL(RReadStream& aStream); williamr@2: void ExternalizeL(RWriteStream& aStream) const; williamr@2: TBool IsFull() const; williamr@2: private: williamr@2: IMPORT_C /*virtual*/ void CContactFieldStorage_Reserved1(); williamr@2: private: williamr@2: HBufC8* iThing; williamr@2: }; williamr@2: williamr@2: class CContactAgentField : public CContactFieldStorage williamr@2: /** Provides access to an agent ID. williamr@2: williamr@2: An agent is a field in a contact item which contains another person's williamr@2: contact details. It corresponds to the agent property in the vCard williamr@2: specification (version 2.1). The agent is identified by an agent ID williamr@2: (a TContactItemId). williamr@2: williamr@2: An object of this class can be retrieved using CContactItemField::AgentStorage(). williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: TStreamId StoreL(CStreamStore& aStore) const; williamr@2: void RestoreL(CStreamStore& aStore,RReadStream& aStream); williamr@2: IMPORT_C void SetAgentId(TContactItemId aId); williamr@2: IMPORT_C TContactItemId Value() const; williamr@2: void InternalizeL( RReadStream& aStream); williamr@2: void ExternalizeL(RWriteStream& aStream) const; williamr@2: TBool IsFull() const; williamr@2: private: williamr@2: IMPORT_C /*virtual*/ void CContactFieldStorage_Reserved1(); williamr@2: private: williamr@2: TContactItemId iAgentId; williamr@2: }; williamr@2: williamr@2: class CContactDateField : public CContactFieldStorage williamr@2: /** Provides access to the date/time value stored in a contact item field. williamr@2: williamr@2: An object of this class can be retrieved using CContactItemField::DateTimeStorage(). williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: CContactDateField(); williamr@2: TStreamId StoreL(CStreamStore& aStore) const; williamr@2: void RestoreL(CStreamStore& aStore,RReadStream& aStream); williamr@2: IMPORT_C void SetTime(TTime aTime); williamr@2: IMPORT_C void SetTime(TDateTime aDateTime); williamr@2: IMPORT_C TTime Time() const; williamr@2: void InternalizeL( RReadStream& aStream); williamr@2: void ExternalizeL(RWriteStream& aStream) const; williamr@2: TBool IsFull() const; williamr@2: private: williamr@2: IMPORT_C /*virtual*/ void CContactFieldStorage_Reserved1(); williamr@2: private: williamr@2: TTime iTime; williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: #endif