williamr@2: // Copyright (c) 2004-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@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.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: #ifndef __CMSVMIMEHEADERS_H__ williamr@2: #define __CMSVMIMEHEADERS_H__ williamr@2: williamr@2: #include williamr@2: williamr@2: class CDesC8ArrayFlat; williamr@2: class CMsvAttachment; williamr@2: class CDesC8Array; williamr@2: williamr@2: /** williamr@2: String literal for Base64 encoding. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: _LIT8(KMsvBase64String, "Base64"); williamr@2: williamr@2: /** williamr@2: String literal for Quoted-Printable encoding. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: _LIT8(KMsvQPString, "quoted-printable"); williamr@2: williamr@2: /** williamr@2: String literal for 7 bit encoding. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: _LIT8(KMsv7BitString, "7bit"); williamr@2: williamr@2: /** williamr@2: String literal for 8 bit encoding. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: _LIT8(KMsv8BitString, "8bit"); williamr@2: williamr@2: /** williamr@2: String literal for binary encoding. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: _LIT8(KMsvBinaryString, "binary"); williamr@2: williamr@2: /** williamr@2: String literal for UU encoding. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: _LIT8(KMsvUUString, "uuencode"); williamr@2: williamr@2: /** williamr@2: Utility class to represent commonly used Mime Headers. This object represents a number williamr@2: of common Mime Headers into a single class. It is intended that this class is used to williamr@2: represent the Mime Headers for an attachment represented by the CMsvAttachment class when williamr@2: using the Attachment API. The Mime header data can be associated with an attachment and williamr@2: stored and restored using the StoreL and RestoreL methods. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class CMsvMimeHeaders : public CBase williamr@2: { williamr@2: public: williamr@2: williamr@2: /** Messaging encoding types. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TMsvEncodingType williamr@2: { williamr@2: /** Unknown. */ williamr@2: EEncodingTypeUnknown, williamr@2: /** None. */ williamr@2: EEncodingTypeNone, williamr@2: /** 7-bit. */ williamr@2: EEncodingType7Bit, williamr@2: /** 8-bit. */ williamr@2: EEncodingType8Bit, // ie lines still <1000 chars and terminated by CRLF williamr@2: /** Binary. */ williamr@2: EEncodingTypeBinary, // ie any length of data, not terminated by CRLF williamr@2: /** QP. */ williamr@2: EEncodingTypeQP, williamr@2: /** Base64. */ williamr@2: EEncodingTypeBASE64, williamr@2: /** UU. */ williamr@2: EEncodingTypeUU williamr@2: }; williamr@2: williamr@2: public: williamr@2: IMPORT_C static CMsvMimeHeaders* NewL(); williamr@2: IMPORT_C static CMsvMimeHeaders* NewLC(); williamr@2: IMPORT_C ~CMsvMimeHeaders(); williamr@2: williamr@2: IMPORT_C void StoreL(CMsvAttachment& aAttachment) const; williamr@2: IMPORT_C void RestoreL(CMsvAttachment& aAttachment); williamr@2: williamr@2: IMPORT_C void SetContentDescriptionL(const TDesC8& aContentDescription); williamr@2: IMPORT_C const TDesC8& ContentDescription() const; williamr@2: williamr@2: IMPORT_C void SetContentBaseL(const TDesC8& aContentBase); williamr@2: IMPORT_C const TDesC8& ContentBase() const; williamr@2: williamr@2: IMPORT_C void SetContentLocationL(const TDesC16& aContentLocation); williamr@2: IMPORT_C const TDesC16& ContentLocation() const; williamr@2: williamr@2: IMPORT_C void SetContentIdL(const TDesC8& aContentId); williamr@2: IMPORT_C const TDesC8& ContentId() const; williamr@2: williamr@2: IMPORT_C void SetContentTypeL(const TDesC8& aContentType); williamr@2: IMPORT_C const TDesC8& ContentType() const; williamr@2: williamr@2: IMPORT_C void SetContentSubTypeL(const TDesC8& aSubContentType); williamr@2: IMPORT_C const TDesC8& ContentSubType() const; williamr@2: williamr@2: IMPORT_C void SetContentDispositionL(const TDesC8& aContentDisposition); williamr@2: IMPORT_C const TDesC8& ContentDisposition() const; williamr@2: williamr@2: IMPORT_C CDesC8Array& ContentTypeParams(); williamr@2: IMPORT_C CDesC8Array& ContentDispositionParams(); williamr@2: IMPORT_C CDesC8Array& XTypeParams(); williamr@2: williamr@2: IMPORT_C const CDesC8Array& ContentTypeParams() const; williamr@2: IMPORT_C const CDesC8Array& ContentDispositionParams() const; williamr@2: IMPORT_C const CDesC8Array& XTypeParams() const; williamr@2: williamr@2: IMPORT_C void SetMimeCharset(TUint aMimeCharset); williamr@2: IMPORT_C TUint MimeCharset() const; williamr@2: williamr@2: IMPORT_C void SetSuggestedFilenameL(const TDesC16& aSuggestedFilename); williamr@2: IMPORT_C const TDesC16& SuggestedFilename() const; williamr@2: williamr@2: IMPORT_C void SetRelativePathL(const TDesC8& aRelativePath); williamr@2: IMPORT_C const TDesC8& RelativePath() const; williamr@2: williamr@2: IMPORT_C void SetContentTransferEncoding(const TDesC8& aEncodingType); williamr@2: IMPORT_C TMsvEncodingType ContentTransferEncoding() const; williamr@2: IMPORT_C TMsvEncodingType ContentTransferEncoding(TPtrC8& aEncodingType) const; williamr@2: IMPORT_C const TPtrC8 GetContentTypeValue(const TDesC8& aContentTypeParameter) const; williamr@2: williamr@2: IMPORT_C void Reset(); williamr@2: IMPORT_C TInt Size() const; williamr@2: IMPORT_C TBool ContainsMimeHeaders(const CMsvAttachment& aAttachment); williamr@2: williamr@2: private: williamr@2: CMsvMimeHeaders(); williamr@2: void ConstructL(); williamr@2: williamr@2: private: williamr@2: HBufC8* iContentDescription; williamr@2: HBufC8* iContentBase; williamr@2: HBufC16* iContentLocation; williamr@2: HBufC8* iContentId; williamr@2: HBufC8* iContentType; williamr@2: HBufC8* iContentSubType; williamr@2: HBufC8* iContentDisposition; williamr@2: CDesC8ArrayFlat* iContentTypeParams; // zero or more "parameter" williamr@2: CDesC8ArrayFlat* iContentDispositionParams; // zero or more "parameters" williamr@2: CDesC8ArrayFlat* iXTypeParams; // zero or more X-Type "parameters" williamr@2: TUint iMimeCharset; williamr@2: HBufC16* iSuggestedFilename; williamr@2: HBufC8* iRelativePath; williamr@2: TMsvEncodingType iContentTransferEncoding; williamr@2: }; williamr@2: williamr@2: #endif // __CMSVMIMEHEADERS_H__