epoc32/include/app/miuthdr.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@4
     4
// under the terms of "Eclipse Public License v1.0"
williamr@2
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@4
    14
// MIUTHDR.H
williamr@2
    15
//
williamr@2
    16
williamr@4
    17
/**
williamr@4
    18
 * @file 
williamr@4
    19
 * @publishedAll
williamr@4
    20
 * @released
williamr@4
    21
 */
williamr@4
    22
williamr@2
    23
#ifndef __MIUTHDR_H__
williamr@2
    24
#define __MIUTHDR_H__
williamr@2
    25
williamr@2
    26
#include <s32strm.h>
williamr@2
    27
#include <badesca.h>
williamr@2
    28
#include <pop3cmds.h>
williamr@2
    29
#include <msvstd.h>
williamr@2
    30
#include <msvids.h>			// KMsvNullIndexEntryId
williamr@2
    31
#include <miutstd.hrh>			// KUidMsvEmailTextEntryValue
williamr@4
    32
#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS  
williamr@4
    33
#include "timrfc822datefield.h"
williamr@4
    34
#endif
williamr@4
    35
/** 
williamr@4
    36
 * IMail-specific stream type within an IMail file store for CImHeader
williamr@4
    37
 * @publishedAll
williamr@4
    38
 * @released
williamr@4
    39
 */
williamr@2
    40
const TUid KUidMsgFileMimeHeader	= {0x1000160F};		// 268441103 decimal
williamr@4
    41
/** 
williamr@4
    42
 * IMail-specific stream type within an IMail file store for CImMimeHeader
williamr@4
    43
 * @publishedAll
williamr@4
    44
 * @released
williamr@4
    45
 */
williamr@2
    46
const TUid KUidMsgFileIMailHeader	= {0x100001D8};		// 268435928 decimal
williamr@2
    47
williamr@4
    48
/** 
williamr@4
    49
 * @publishedAll
williamr@4
    50
 * @released
williamr@4
    51
 */
williamr@2
    52
class CMsvStore;
williamr@2
    53
class TMsvEntry;
williamr@2
    54
class RMsvReadStream;
williamr@2
    55
class RMsvWriteStream;
williamr@4
    56
/** 
williamr@4
    57
 * @internalTechnology
williamr@4
    58
 * @released
williamr@4
    59
 */
williamr@2
    60
class CImEncodedHeader;
williamr@2
    61
williamr@2
    62
/** Defines how emails will be encoded when they are sent.
williamr@2
    63
williamr@2
    64
MIME standards are defined in RFC 2045, RFC 2046 and RFC 2047. 
williamr@2
    65
@publishedAll
williamr@2
    66
@released
williamr@2
    67
*/
williamr@2
    68
enum TMsgOutboxBodyEncoding
williamr@2
    69
	{
williamr@2
    70
	/** Emails are sent with the default encoding, which is as for EMsgOutboxMIME. */
williamr@2
    71
	EMsgOutboxDefault,
williamr@2
    72
	/** Emails are sent as plain text RFC822 messages. 
williamr@2
    73
	
williamr@2
    74
	Attachments are encoded using UUEncoding algorithm. This method would not 
williamr@2
    75
	normally be used unless the sender was sure that the receiving mail clients 
williamr@2
    76
	don't support MIME. */
williamr@2
    77
	EMsgOutboxNoAlgorithm,
williamr@2
    78
	/** Text is encoded using quoted-printable encoding, and all attachments are encoded 
williamr@2
    79
	using BASE64 encoding.
williamr@2
    80
	
williamr@2
    81
	This is the default setting for this option. */
williamr@2
    82
	EMsgOutboxMIME,
williamr@2
    83
	/** Text parts of the message are sent as MIME TEXT/HTML parts, and are encoded 
williamr@2
    84
	using UTF-8 encoding system. 
williamr@2
    85
	
williamr@2
    86
	All attachments are encoded using BASE64 encoding. Receiving mail clients 
williamr@2
    87
	that do no support MHTML mail will display the HTML message text to the user 
williamr@2
    88
	including all HTML tags, etc. */
williamr@2
    89
	EMsgOutboxMHTMLAsMIME,
williamr@2
    90
	/** Each text part of the message is sent as two alternative MIME parts.
williamr@2
    91
	
williamr@2
    92
	The first part is sent as plain text using quoted-printable encoding, the 
williamr@2
    93
	second part is sent as a TEXT/HTML part which is encoded using UTF-8 encoding 
williamr@2
    94
	system. All attachments are encoded using BASE64 encoding. This is the standard 
williamr@2
    95
	encoding method if the user wishes to send MHTML mail. */
williamr@2
    96
	EMsgOutboxMHTMLAlternativeAsMIME
williamr@2
    97
	};
williamr@2
    98
williamr@2
    99
/** Messaging encoding types. 
williamr@2
   100
@publishedAll
williamr@2
   101
@released
williamr@2
   102
*/
williamr@2
   103
enum TImEncodingType 
williamr@2
   104
	{
williamr@2
   105
	/** Unknown. */
williamr@2
   106
	EEncodingTypeUnknown,
williamr@2
   107
	/** None. */
williamr@2
   108
	EEncodingTypeNone,
williamr@2
   109
	/** 7-bit. */
williamr@2
   110
	EEncodingType7Bit,
williamr@2
   111
	/** 8-bit. */
williamr@2
   112
	EEncodingType8Bit,		// ie lines still <1000 chars and terminated by CRLF
williamr@2
   113
	/** Binary. */
williamr@2
   114
	EEncodingTypeBinary,	// ie any length of data, not terminated by CRLF
williamr@2
   115
	/** QP. */
williamr@2
   116
	EEncodingTypeQP,
williamr@2
   117
	/** Base64. */
williamr@2
   118
	EEncodingTypeBASE64,
williamr@2
   119
	/** UU. */
williamr@2
   120
	EEncodingTypeUU
williamr@2
   121
	};
williamr@2
   122
williamr@2
   123
williamr@2
   124
// Class used for storing extracting information (to/from header)..
williamr@2
   125
// regarding the encoding in an incoming email message header.
williamr@2
   126
//----------------------------------------------------------------------------------------
williamr@2
   127
class TImHeaderEncodingInfo
williamr@2
   128
//----------------------------------------------------------------------------------------
williamr@2
   129
/** Stores encoding data found in message headers. 
williamr@2
   130
@publishedAll
williamr@2
   131
@released
williamr@2
   132
*/
williamr@2
   133
	{
williamr@2
   134
public:
williamr@2
   135
	/** Message field types. */
williamr@2
   136
	enum TFieldList 
williamr@2
   137
		{ 
williamr@2
   138
		EFrom, 		/**< "From" field. */
williamr@2
   139
		EReplyTo, 	/**< "Reply To" field. */
williamr@2
   140
		ETo, 		/**< "To" field. */
williamr@2
   141
		ECc, 		/**< "Cc" field. */
williamr@2
   142
		EBcc, 		/**< "Bcc" field. */
williamr@2
   143
		ESubject	/**< Subject field. */
williamr@2
   144
		};
williamr@2
   145
	/** Encoding types. */
williamr@2
   146
	enum TEncodingType 
williamr@2
   147
		{ 
williamr@2
   148
		EBase64, 		/**< Base64. */
williamr@2
   149
		EQP, 			/**< QP. */
williamr@2
   150
		ENoEncoding, 	/**< No encoding */
williamr@2
   151
		EUU				/**< UU. */
williamr@2
   152
		};
williamr@2
   153
williamr@2
   154
public:
williamr@2
   155
	IMPORT_C TImHeaderEncodingInfo();
williamr@2
   156
	IMPORT_C TImHeaderEncodingInfo(const TImHeaderEncodingInfo& aFrom);
williamr@2
   157
williamr@2
   158
	IMPORT_C void ExternalizeL( RWriteStream& aWriteStream ) const;
williamr@2
   159
	IMPORT_C void InternalizeL( RReadStream& aReadStream );
williamr@2
   160
williamr@2
   161
	inline void SetField(const TFieldList aField);
williamr@2
   162
	inline TFieldList Field() const;
williamr@2
   163
williamr@2
   164
	inline void SetOffset(const TInt aOffset);
williamr@2
   165
	inline TInt Offset() const;
williamr@2
   166
williamr@2
   167
	inline void SetLength(const TInt aLength);
williamr@2
   168
	inline TInt Length() const;
williamr@2
   169
williamr@2
   170
	inline void SetCharsetUid(const TUint aUid);
williamr@2
   171
	inline TUint CharsetUid() const;
williamr@2
   172
williamr@2
   173
	inline void SetEncodingType(const TDesC8& aChar);
williamr@2
   174
	inline void SetEncodingType(const TEncodingType aType);
williamr@2
   175
	inline  TEncodingType EncodingType() const;
williamr@2
   176
williamr@2
   177
	inline void SetArrayValue(const TInt aValue);
williamr@2
   178
	inline  TInt ArrayValue() const;
williamr@2
   179
williamr@2
   180
	inline void SetAddSpace(const TBool atrueFalse);
williamr@2
   181
	inline  TBool AddSpace() const;
williamr@2
   182
williamr@2
   183
	inline void SetEncodedLength(const TInt aLength);
williamr@2
   184
	inline TInt EncodedLength() const;
williamr@2
   185
williamr@2
   186
private:
williamr@2
   187
	TFieldList		iField; 
williamr@2
   188
	TUint16			iOffset;
williamr@2
   189
	TUint16			iLength;
williamr@2
   190
	TEncodingType	iType;
williamr@2
   191
	TUint16			iArrayValue;
williamr@2
   192
	TBool	iAddSpace; // A space char needs adding between two adjoining 'encoded-words'
williamr@2
   193
	TUint8	iEncodedLength; // This can be used to determine space needed for buffer.
williamr@2
   194
	TUint	iCharsetUid; 
williamr@2
   195
williamr@2
   196
	};
williamr@2
   197
williamr@2
   198
williamr@2
   199
//------------------------------------------------------------------------------
williamr@2
   200
williamr@2
   201
williamr@2
   202
class CImHeader : public CBase
williamr@2
   203
/** Encapsulates an Internet Mail (RFC822) header.
williamr@2
   204
williamr@2
   205
Note that the class contains some obsolete functions that take a narrow descriptor: 
williamr@2
   206
always use the equivalent wide descriptor function instead. 
williamr@2
   207
@publishedAll
williamr@2
   208
@released
williamr@2
   209
*/
williamr@2
   210
	{
williamr@2
   211
public:
williamr@2
   212
/** Flags used to determine where to obtain the ReplyTo address for the header 
williamr@2
   213
field of that name. */
williamr@2
   214
	enum TReplyTo 
williamr@2
   215
		{ 
williamr@2
   216
	/** Get address from originator. */
williamr@2
   217
		EOriginator, 
williamr@2
   218
	/** Get address from sender. */
williamr@2
   219
		ESender, 
williamr@2
   220
	/** Get address from all sources. */
williamr@2
   221
		EAll,
williamr@2
   222
	/** Get address from recipients. */
williamr@2
   223
		ERecipients
williamr@2
   224
		};
williamr@2
   225
williamr@2
   226
	IMPORT_C static CImHeader* NewLC();
williamr@2
   227
	IMPORT_C ~CImHeader();
williamr@2
   228
	IMPORT_C void Reset();
williamr@2
   229
williamr@2
   230
	// streaming operations
williamr@2
   231
	IMPORT_C void InternalizeL(RMsvReadStream& aReadStream);
williamr@2
   232
	IMPORT_C void ExternalizeL(RMsvWriteStream& aWriteStream) const;
williamr@2
   233
	IMPORT_C void RestoreL(CMsvStore& aMessageStore);
williamr@2
   234
	IMPORT_C void StoreL  (CMsvStore& aMessageStore) const;
williamr@2
   235
	IMPORT_C void StoreWithoutCommitL(CMsvStore& aMessageStore) const;
williamr@2
   236
williamr@4
   237
williamr@2
   238
	// the bulk of the member functions are accessors & mutators so we can use
williamr@2
   239
	// objects of the class as data repositories during the data-marshalling stage
williamr@2
   240
	// of getting imail headers to/from the internet
williamr@2
   241
	IMPORT_C const TPtrC Subject() const;
williamr@2
   242
	IMPORT_C void SetSubjectL(const TDesC8& aSubject);
williamr@2
   243
williamr@2
   244
	// Internet message ID
williamr@2
   245
	IMPORT_C const TPtrC8 ImMsgId() const;
williamr@2
   246
	/** Sets the "MessageId" header field.
williamr@2
   247
	
williamr@2
   248
	@param aImMsgIdL Field value */
williamr@2
   249
	IMPORT_C void SetImMsgIdL(const TDesC8& aImMsgIdL);
williamr@2
   250
williamr@2
   251
	IMPORT_C const TPtrC From() const;
williamr@2
   252
	IMPORT_C void SetFromL(const TDesC8& aFrom);
williamr@2
   253
williamr@2
   254
	IMPORT_C const TPtrC ReplyTo() const;
williamr@2
   255
	IMPORT_C void SetReplyToL(const TDesC8& aReplyTo);
williamr@2
   256
williamr@2
   257
	IMPORT_C const TPtrC ReceiptAddress() const;
williamr@2
   258
	/** Sets the "Receipt" header field. 
williamr@2
   259
	
williamr@2
   260
	@param aReceiptAddress Field value */
williamr@2
   261
	IMPORT_C void SetReceiptAddressL(const TDesC8& aReceiptAddress);
williamr@2
   262
williamr@2
   263
	IMPORT_C TUint Charset() const;
williamr@2
   264
	IMPORT_C void SetCharset(const TUint aCharset);
williamr@2
   265
williamr@2
   266
#if defined (_UNICODE)
williamr@2
   267
	IMPORT_C void SetFromL(const TDesC16& aFrom);
williamr@2
   268
	IMPORT_C void SetReplyToL(const TDesC16& aReplyTo);
williamr@2
   269
	/** Sets the "Receipt" header field. 
williamr@2
   270
	
williamr@2
   271
	@param aReceiptAddress Field value */
williamr@2
   272
	IMPORT_C void SetReceiptAddressL(const TDesC16& aReceiptAddress);
williamr@2
   273
	IMPORT_C void SetSubjectL(const TDesC16& aSubject);
williamr@2
   274
#endif
williamr@2
   275
williamr@2
   276
	IMPORT_C TInt DataSize();
williamr@2
   277
williamr@2
   278
	inline const TUint RemoteSize() const;
williamr@2
   279
	inline void SetRemoteSize(TUint aSize);
williamr@2
   280
williamr@2
   281
	inline const TUint16 Version() const;
williamr@2
   282
	inline void SetVersion(TUint16 aVersion);
williamr@2
   283
williamr@2
   284
	// give const access to the recipient lists
williamr@2
   285
	inline const CDesCArray& ToRecipients () const;
williamr@2
   286
	inline const CDesCArray& CcRecipients () const;
williamr@2
   287
	inline const CDesCArray& BccRecipients() const;
williamr@2
   288
	
williamr@2
   289
	// give non-const access to the recipient lists
williamr@2
   290
	inline CDesCArray& ToRecipients () ;
williamr@2
   291
	inline CDesCArray& CcRecipients () ;
williamr@2
   292
	inline CDesCArray& BccRecipients() ;
williamr@2
   293
williamr@2
   294
	inline CArrayFix<TImHeaderEncodingInfo>& EncodingInfo() ;
williamr@2
   295
	inline const CArrayFix<TImHeaderEncodingInfo>& EncodingInfo() const;
williamr@2
   296
williamr@2
   297
	IMPORT_C void AddEncodingInfoL(TImHeaderEncodingInfo& aInfo);
williamr@2
   298
williamr@2
   299
//-------------------------------------------------------------------------------------
williamr@2
   300
//----------------------Used for forwarding/replying to an email ----------------------
williamr@2
   301
williamr@2
   302
	IMPORT_C const TPtrC8 ResentMsgId() const;
williamr@2
   303
	IMPORT_C void SetResentMsgIdL( const TDesC8& );
williamr@2
   304
williamr@2
   305
	IMPORT_C const TPtrC ResentFrom() const;
williamr@2
   306
	IMPORT_C void SetResentFromL( const TDesC& );
williamr@2
   307
williamr@2
   308
	// give const access to the recipient lists
williamr@2
   309
	inline const CDesCArray& ResentToRecipients () const;
williamr@2
   310
	inline const CDesCArray& ResentCcRecipients () const;
williamr@2
   311
	inline const CDesCArray& ResentBccRecipients() const;
williamr@2
   312
williamr@2
   313
	// give non-const access to the recipient lists
williamr@2
   314
	inline CDesCArray& ResentToRecipients ();
williamr@2
   315
	inline CDesCArray& ResentCcRecipients ();
williamr@2
   316
	inline CDesCArray& ResentBccRecipients();
williamr@2
   317
williamr@2
   318
	IMPORT_C const TPtrC8 InReplyTo() const;
williamr@2
   319
	IMPORT_C void SetInReplyToL(const TDesC8&);
williamr@2
   320
williamr@2
   321
	IMPORT_C TInt CreateForwardL(CImHeader&, TDesC&);
williamr@2
   322
	IMPORT_C TInt CreateReplyL(CImHeader&, TReplyTo, TDesC&);
williamr@2
   323
	IMPORT_C void CreateReceiptL(CImHeader&, TDesC&);
williamr@2
   324
williamr@2
   325
//-------------------------------------------------------------------------------------
williamr@2
   326
//-------------------------------------------------------------------------------------
williamr@2
   327
williamr@2
   328
	// Body Encoding (charset) stored on a per message basis
williamr@2
   329
	IMPORT_C TMsgOutboxBodyEncoding BodyEncoding() const;
williamr@2
   330
	IMPORT_C void SetBodyEncoding(TMsgOutboxBodyEncoding aMessageBodyEncoding);
williamr@2
   331
williamr@2
   332
	IMPORT_C void ReDecodeL(RFs& aFS);
williamr@2
   333
	IMPORT_C TUint OverrideCharset() const;
williamr@2
   334
	IMPORT_C void SetOverrideCharset(TUint aCharset);
williamr@2
   335
	IMPORT_C void SaveEncodedHeadersL();
williamr@2
   336
williamr@2
   337
private:
williamr@2
   338
	CImHeader();
williamr@2
   339
	void ConstructL();
williamr@2
   340
	
williamr@2
   341
	// these four functions keep the line count down as there are several instances
williamr@2
   342
	// of streaming in/out HBufC objects.
williamr@2
   343
	void ReadRecipientsL ( RReadStream&, CDesCArray* );
williamr@2
   344
	void WriteRecipientsL( RWriteStream&, const CDesCArray* ) const;
williamr@2
   345
	void FormatSubjectL(CImHeader&, TDesC&);
williamr@2
   346
williamr@2
   347
	//finds the duplicate recipients in To and Cc list
williamr@2
   348
	TBool IsRecipientPresent(CImHeader& aCImHeader, TPtrC16 newRecipient);
williamr@2
   349
williamr@4
   350
#if (defined SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB)
williamr@4
   351
	void ReStoreDBL(CMsvStore& aMessageStore);
williamr@4
   352
	void StoreDBL  (CMsvStore& aMessageStore) const;
williamr@4
   353
	void CreateImHeaderArrayListL(TDesC16& aStr, CDesCArray& aRecipients);
williamr@4
   354
	void CreateEncodingInfoL(TDesC16& aEncodingStr);
williamr@4
   355
	HBufC16* Convert8to16L(const TDesC8& aStr) const;
williamr@4
   356
	void CreateBufferL( RBuf16& aBuf, CDesCArray& aRecipients)const;
williamr@4
   357
#endif 
williamr@2
   358
private:
williamr@2
   359
	TUint16 iVersion;
williamr@2
   360
williamr@2
   361
	HBufC16* iFrom;
williamr@2
   362
	HBufC* iSubject;
williamr@2
   363
	HBufC8* iImMsgId;
williamr@2
   364
	HBufC16* iReplyTo;
williamr@2
   365
	HBufC16* iReceipt;
williamr@2
   366
williamr@2
   367
	CDesCArray* iTo;
williamr@2
   368
	CDesCArray* iCc;
williamr@2
   369
	CDesCArray* iBcc;
williamr@2
   370
	TUint iRemoteSize;
williamr@2
   371
williamr@2
   372
//-------------------------------------------------------------------------------------
williamr@2
   373
//----------------------Used for forwarding/replying to an email ----------------------
williamr@2
   374
williamr@2
   375
	HBufC* iResentFrom;
williamr@2
   376
	HBufC8* iResentMsgId;
williamr@2
   377
 	CDesCArray* iResentTo;
williamr@2
   378
	CDesCArray* iResentCc;
williamr@2
   379
	CDesCArray* iResentBcc;
williamr@2
   380
	HBufC8* iInReplyTo;
williamr@2
   381
williamr@2
   382
//-------------------------------------------------------------------------------------
williamr@2
   383
//-------------------------------------------------------------------------------------
williamr@2
   384
	CArrayFix<TImHeaderEncodingInfo>* iEncodingInfo;
williamr@2
   385
	TMsgOutboxBodyEncoding			iBodyEncoding;
williamr@2
   386
	// The character set to be when sending message.
williamr@2
   387
	// Overrides the charset passed in from the settings.
williamr@2
   388
	TUint							i822HeaderCharset; 
williamr@2
   389
williamr@2
   390
	CImEncodedHeader* iEncodedHeader;
williamr@4
   391
#if (defined SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB)
williamr@4
   392
	friend class CTestEmailHeaderStoreReStore;
williamr@4
   393
#endif 
williamr@2
   394
	};
williamr@2
   395
williamr@2
   396
/** Folder type flags.
williamr@2
   397
williamr@2
   398
The flags correspond to the MIME multipart subtype. 
williamr@2
   399
@publishedAll
williamr@2
   400
@released
williamr@2
   401
*/
williamr@2
   402
enum TImEmailFolderType
williamr@2
   403
	{
williamr@2
   404
	/** Unknown. */
williamr@2
   405
	EFolderTypeUnknown,
williamr@2
   406
	/** Related. */
williamr@2
   407
	EFolderTypeRelated,
williamr@2
   408
	/** Mixed. */
williamr@2
   409
	EFolderTypeMixed,
williamr@2
   410
	/** Parallel. */
williamr@2
   411
	EFolderTypeParallel,
williamr@2
   412
	/** Alternative. */
williamr@2
   413
	EFolderTypeAlternative,
williamr@2
   414
	/** Digest. */
williamr@2
   415
	EFolderTypeDigest,
williamr@2
   416
	/** RFC822. */
williamr@2
   417
	EFolderTypeRFC822,
williamr@2
   418
	/** Partial. */
williamr@2
   419
	EFolderTypePartial,
williamr@2
   420
	/** Directory. */
williamr@2
   421
	EFolderTypeDirectory,
williamr@2
   422
	/** External. */
williamr@2
   423
	EFolderTypeExternal
williamr@2
   424
	};
williamr@2
   425
williamr@2
   426
/** Describes the types of off-line email operations than can occur.
williamr@2
   427
williamr@2
   428
@see TMsvEmailEntry::DisconnectedOperation() 
williamr@2
   429
@publishedAll
williamr@2
   430
@released
williamr@2
   431
*/
williamr@2
   432
enum TImDisconnectedOperationType
williamr@2
   433
	{
williamr@2
   434
	/** No operation. */
williamr@2
   435
	ENoDisconnectedOperations,
williamr@2
   436
	/** Create operation. */
williamr@2
   437
	EDisconnectedCreateOperation,
williamr@2
   438
	/** Delete operation. */
williamr@2
   439
	EDisconnectedDeleteOperation,
williamr@2
   440
	/** Change operation. */
williamr@2
   441
	EDisconnectedChangeOperation,
williamr@2
   442
	/** "Copy to" operation. */
williamr@2
   443
	EDisconnectedCopyToOperation,
williamr@2
   444
	/** "Copy from" operation. */
williamr@2
   445
	EDisconnectedCopyFromOperation,
williamr@2
   446
	/** "Copy within service" operation. */
williamr@2
   447
	EDisconnectedCopyWithinServiceOperation,
williamr@2
   448
	/** "Move to" operation. */
williamr@2
   449
	EDisconnectedMoveToOperation,
williamr@2
   450
	/** "Move from" operation. */
williamr@2
   451
	EDisconnectedMoveFromOperation,
williamr@2
   452
	/** "Move within service" operation. */
williamr@2
   453
	EDisconnectedMoveWithinServiceOperation,
williamr@2
   454
	/** Special operation. */
williamr@2
   455
	EDisconnectedSpecialOperation,
williamr@2
   456
	/** Unknown operation. */
williamr@2
   457
	EDisconnectedUnknownOperation,
williamr@2
   458
	/** Multiple operations. */
williamr@2
   459
	EDisconnectedMultipleOperation
williamr@2
   460
	};
williamr@2
   461
williamr@2
   462
// Remote folder message count limited to TUint16 by using lower 16 bits of "iMtmData3".
williamr@2
   463
// Note: The upper 16 bits of "iMtmData3" are not currently used by "TMsvEmailEntry".
williamr@2
   464
const TUint KMsvRemoteFolderEntriesMask =		0x0000FFFF;
williamr@2
   465
williamr@2
   466
class TMsvEmailEntry : public TMsvEntry
williamr@2
   467
/** Provides storage for and access to extra email specific information for a message.
williamr@2
   468
williamr@2
   469
To get a TMsvEmailEntry, get the entry's TMsvEntry, e.g. using
williamr@2
   470
@c CMsvEntry::Entry(), and use the constructor that takes a TMsvEntry parameter.
williamr@2
   471
williamr@2
   472
Many of the flags are only used by IMAP4 entries. These can be grouped as follows:
williamr@2
   473
williamr@2
   474
- IMAP-specific flags, as defined by the IMAP protocol (see RFC3501, 2.3.2. Flags Message Attribute)
williamr@2
   475
  - GetIMAP4Flags() and SetIMAP4Flags() handle all the flags as a group
williamr@2
   476
  - \\Seen flag: SetSeenIMAP4Flag(), SeenIMAP4Flag(). 
williamr@2
   477
  - \\Answered flag: SetAnsweredIMAP4Flag(), AnsweredIMAP4Flag()
williamr@2
   478
  - \\Flagged flag: SetFlaggedIMAP4Flag(), FlaggedIMAP4Flag()
williamr@2
   479
  - \\Deleted flag: SetDeletedIMAP4Flag(), DeletedIMAP4Flag() 
williamr@2
   480
  - \\Draft flag: SetDraftIMAP4Flag(), DraftIMAP4Flag() 
williamr@2
   481
  - \\Recent flag: SetRecentIMAP4Flag(), RecentIMAP4Flag()
williamr@2
   482
- Folder subscriptions and other folder-related flags: 
williamr@2
   483
  - SetMailbox(), Mailbox(), 
williamr@2
   484
  - SetSubscribed(), Subscribed(), 
williamr@2
   485
  - SetLocalSubscription(), LocalSubscription()
williamr@2
   486
  - SetRemoteFolderEntries(), RemoteFolderEntries()  
williamr@2
   487
- Disconnected operation information:
williamr@2
   488
  - SetDisconnectedOperation(), DisconnectedOperation().
williamr@2
   489
- Partial download flags: these flags allow a client to test if a message or its body has
williamr@2
   490
  been partially downloaded (see TImImap4GetPartialMailInfo)   
williamr@2
   491
  - SetPartialDownloaded(), PartialDownloaded() 
williamr@2
   492
  - SetBodyTextComplete(), BodyTextComplete()
williamr@2
   493
- UID information: IMAP messages have a unique identifier number (see 
williamr@2
   494
  RFC3501, 2.3.1.1. Unique Identifier (UID) Message Attribute)
williamr@2
   495
  - SetValidUID(), ValidUID()
williamr@2
   496
  - SetUID(), UID().
williamr@2
   497
  
williamr@2
   498
The following flags are set only by the IMAP MTM. They indicate if the 
williamr@2
   499
message contains a vCard, vCalendar (http://www.imc.org), or iCalendar (RFC 2445) attachment.
williamr@2
   500
williamr@2
   501
- VCard(), SetVCard()
williamr@2
   502
- VCalendar(), SetVCalendar() 
williamr@2
   503
- ICalendar(), SetICalendar()
williamr@2
   504
williamr@2
   505
The following flags apply to all email protocols:
williamr@2
   506
williamr@2
   507
- Receipt requested: Receipt(), SetReceipt()
williamr@2
   508
- MHTML content: MHTMLEmail(), SetMHTMLEmail()
williamr@2
   509
williamr@2
   510
Note that the email specific data is stored in the reserved data members @c iMtmData1, 
williamr@2
   511
@c iMtmData2 and @c iMtmData3 of the TMsvEntry base class. These public data members 
williamr@2
   512
must not be directly altered by clients.
williamr@2
   513
williamr@2
   514
@publishedAll
williamr@2
   515
@released
williamr@2
   516
@see CImap4ClientMtm
williamr@2
   517
*/
williamr@2
   518
	{
williamr@2
   519
public: // Public member functions
williamr@2
   520
	IMPORT_C TMsvEmailEntry();	// default constructor
williamr@2
   521
	IMPORT_C TMsvEmailEntry(const TMsvEntry& aGenericEntry); 
williamr@2
   522
williamr@2
   523
	IMPORT_C TBool operator==(const TMsvEntry& aEntry) const;
williamr@2
   524
	IMPORT_C TBool operator==(const TMsvEmailEntry& aEntry) const;
williamr@2
   525
williamr@2
   526
	IMPORT_C void GetIMAP4Flags(TBool& rUnread,TBool& rSeen,TBool& rAnswered,TBool& rFlagged,TBool& rDeleted,TBool& rDraft,TBool& rRecent);
williamr@2
   527
	IMPORT_C void SetIMAP4Flags(TBool aUnread,TBool aSeen,TBool aAnswered,TBool aFlagged,TBool aDeleted,TBool aDraft,TBool aRecent);
williamr@2
   528
williamr@2
   529
	IMPORT_C void SetMessageFolderType(TImEmailFolderType aFolderType);
williamr@2
   530
	IMPORT_C TImEmailFolderType MessageFolderType() const;
williamr@2
   531
williamr@2
   532
	IMPORT_C void SetDisconnectedOperation(TImDisconnectedOperationType aDisconnectedOperationType);
williamr@2
   533
	IMPORT_C TImDisconnectedOperationType DisconnectedOperation() const;
williamr@2
   534
williamr@2
   535
	IMPORT_C void SetPartialDownloaded(TBool aPartialDownloaded);
williamr@2
   536
	IMPORT_C TBool PartialDownloaded() const;
williamr@2
   537
williamr@2
   538
	//
williamr@2
   539
	inline void SetEncrypted(TBool aEncrypt);
williamr@2
   540
	inline TBool Encrypted() const;
williamr@2
   541
	//
williamr@2
   542
	inline void SetSigned(TBool aSignature);
williamr@2
   543
	inline TBool Signed() const;
williamr@2
   544
	//
williamr@2
   545
	inline TBool VCard() const;
williamr@2
   546
	inline void SetVCard(TBool aVCard);
williamr@2
   547
	//
williamr@2
   548
	inline TBool VCalendar() const;
williamr@2
   549
	inline void SetVCalendar(TBool aVCal);
williamr@2
   550
	//
williamr@2
   551
	inline TBool ICalendar() const;
williamr@2
   552
	inline void SetICalendar(TBool aICal);
williamr@2
   553
	//
williamr@2
   554
	inline TBool Receipt() const;
williamr@2
   555
	inline void SetReceipt(TBool aReceipt);
williamr@2
   556
williamr@2
   557
	inline TBool MHTMLEmail() const;
williamr@2
   558
	inline void SetMHTMLEmail(TBool aMhtml);
williamr@2
   559
williamr@2
   560
	inline TBool BodyTextComplete() const;
williamr@2
   561
	inline void SetBodyTextComplete(TBool aFlag);
williamr@2
   562
williamr@2
   563
	//
williamr@2
   564
	// IMAP4-specific flags
williamr@2
   565
	//
williamr@2
   566
	inline void SetUnreadIMAP4Flag(TBool aUnread);
williamr@2
   567
	inline TBool UnreadIMAP4Flag() const;
williamr@2
   568
	//
williamr@2
   569
	inline void SetSeenIMAP4Flag(TBool aSeen);
williamr@2
   570
	inline TBool SeenIMAP4Flag() const;
williamr@2
   571
	//
williamr@2
   572
	inline void SetAnsweredIMAP4Flag(TBool aAnswered);
williamr@2
   573
	inline TBool AnsweredIMAP4Flag() const;
williamr@2
   574
	//
williamr@2
   575
	inline void SetFlaggedIMAP4Flag(TBool aFlagged);
williamr@2
   576
	inline TBool FlaggedIMAP4Flag() const;
williamr@2
   577
	//
williamr@2
   578
	inline void SetDeletedIMAP4Flag(TBool aDeleted);
williamr@2
   579
	inline TBool DeletedIMAP4Flag() const;
williamr@2
   580
	//
williamr@2
   581
	inline void SetDraftIMAP4Flag(TBool aDraft);
williamr@2
   582
	inline TBool DraftIMAP4Flag() const;
williamr@2
   583
	//
williamr@2
   584
	inline void SetRecentIMAP4Flag(TBool aRecent);
williamr@2
   585
	inline TBool RecentIMAP4Flag() const;
williamr@2
   586
	//
williamr@2
   587
	inline void SetMailbox(TBool aMailbox);
williamr@2
   588
	inline TBool Mailbox() const;
williamr@2
   589
	//
williamr@2
   590
	inline TBool Orphan() const;
williamr@2
   591
williamr@2
   592
	inline void SetOrphan(TBool aOrphan);
williamr@2
   593
	//
williamr@2
   594
	inline void SetValidUID(TBool aValid);
williamr@2
   595
	inline TBool ValidUID() const;
williamr@2
   596
	//
williamr@2
   597
	inline void SetSubscribed(TBool aSubscribed);
williamr@2
   598
	inline TBool Subscribed() const;
williamr@2
   599
	//
williamr@2
   600
	inline void SetLocalSubscription(TBool aLocal);		// i.e. is subscription local, or remote
williamr@2
   601
	inline TBool LocalSubscription() const;
williamr@2
   602
	//
williamr@2
   603
	inline void SetUID(TUint32 aUid);
williamr@2
   604
	inline TUint32 UID() const;
williamr@2
   605
	//
williamr@2
   606
	inline TInt RemoteFolderEntries() const;
williamr@2
   607
	inline void SetRemoteFolderEntries(TInt aEntries);
williamr@2
   608
williamr@2
   609
private:
williamr@2
   610
	enum TMsvEmailEntryFlags
williamr@2
   611
		{	
williamr@2
   612
		KMsvEmailEntryClearFlag				=0x00,
williamr@2
   613
		// Flags set on Message entries...
williamr@2
   614
		KMsvEmailEntryEncryptedFlag			=0x00000001,
williamr@2
   615
		KMsvEmailEntrySignedFlag			=0x00000002,
williamr@2
   616
		KMsvEmailEntryReceiptFlag			=0x00000004,
williamr@2
   617
		KMsvEmailEntryOrphanFlag			=0x00000008,
williamr@2
   618
williamr@2
   619
		// VCard and VCalendar entries may be set on folders or attachments
williamr@2
   620
		KMsvEmailEntryVCardFlag				=0x00000010,
williamr@2
   621
		KMsvEmailEntryVCalendarFlag			=0x00000020,
williamr@2
   622
williamr@2
   623
		// Message contains HTML data
williamr@2
   624
		// (Note: HTML and not only MHTML)
williamr@2
   625
		KMsvEmailEntryMHTMLFlag				= 0x00000040,
williamr@2
   626
		KMsvEmailEntryBodyTextCompleteFlag	= 0x00000080,
williamr@2
   627
williamr@2
   628
		KMsvEmailEntryNoDisconnectedOperations					= 0x00000000,
williamr@2
   629
		KMsvEmailEntryDisconnectedCreateOperation				= 0x00000100,
williamr@2
   630
		KMsvEmailEntryDisconnectedDeleteOperation				= 0x00000200,
williamr@2
   631
		KMsvEmailEntryDisconnectedChangeOperation				= 0x00000300,
williamr@2
   632
		KMsvEmailEntryDisconnectedCopyToOperation				= 0x00000400,
williamr@2
   633
		KMsvEmailEntryDisconnectedCopyFromOperation				= 0x00000500,
williamr@2
   634
		KMsvEmailEntryDisconnectedCopyWithinServiceOperation	= 0x00000600,
williamr@2
   635
		KMsvEmailEntryDisconnectedMoveToOperation				= 0x00000700,
williamr@2
   636
		KMsvEmailEntryDisconnectedMoveFromOperation				= 0x00000800,
williamr@2
   637
		KMsvEmailEntryDisconnectedMoveWithinServiceOperation	= 0x00000900,
williamr@2
   638
		KMsvEmailEntryDisconnectedSpecialOperation				= 0x00000A00,
williamr@2
   639
		KMsvEmailEntryDisconnectedUnknownOperation				= 0x00000B00,
williamr@2
   640
		KMsvEmailEntryDisconnectedMultipleOperation				= 0x00000C00,
williamr@2
   641
		KMsvEmailEntryDisconnectedOperation						= 0x00000F00,
williamr@2
   642
williamr@2
   643
		// IMAP4-specific masks. Can be re-used by non-IMAP4 entries (eg POP3, SMTP)
williamr@2
   644
		KMsvEmailEntryIMAP4SubscribedFlag	=0x00001000,
williamr@2
   645
		KMsvEmailEntryIMAP4UnreadFlag		=0x00002000,
williamr@2
   646
		KMsvEmailEntryIMAP4SeenFlag			=0x00004000,
williamr@2
   647
		KMsvEmailEntryIMAP4AnsweredFlag		=0x00008000,	
williamr@2
   648
		KMsvEmailEntryIMAP4FlaggedFlag		=0x00010000,	
williamr@2
   649
		KMsvEmailEntryIMAP4DeletedFlag		=0x00020000,	
williamr@2
   650
		KMsvEmailEntryIMAP4DraftFlag		=0x00040000,	
williamr@2
   651
		KMsvEmailEntryIMAP4RecentFlag		=0x00080000,	
williamr@2
   652
		KMsvEmailEntryIMAP4ValidUIDFlag		=0x00100000,
williamr@2
   653
		KMsvEmailEntryIMAP4MailboxFlag		=0x00200000,
williamr@2
   654
		KMsvEmailEntryIMAP4LocalSubFlag		=0x00400000,
williamr@2
   655
williamr@2
   656
		// MIME "multipart" types assigned to folders. 
williamr@2
   657
		KMsvMimeFolderUnknownMask			=0x00000000,
williamr@2
   658
		KMsvMimeFolderRelatedMask			=0x01000000,
williamr@2
   659
		KMsvMimeFolderMixedMask				=0x02000000,
williamr@2
   660
		KMsvMimeFolderAlternativeMask		=0x03000000,
williamr@2
   661
		KMsvMimeFolderParallelMask			=0x04000000,
williamr@2
   662
		KMsvMimeFolderDigestMask			=0x05000000,
williamr@2
   663
williamr@2
   664
		// MIME message types
williamr@2
   665
		KMsvMimeFolderRFC822Mask			=0x06000000,
williamr@2
   666
		KMsvMimeFolderPartialMask			=0x07000000,
williamr@2
   667
		KMsvMimeFolderDirectoryMask			=0x08000000,	// for VCard, VCalendar types
williamr@2
   668
		KMsvMimeFolderExternalMask			=0x09000000,
williamr@2
   669
		KMsvMimeFolderMask					=0x0F000000,
williamr@2
   670
		
williamr@2
   671
		// Can be used by POP3 and IMAP4 MTMs.
williamr@2
   672
		KMsvEmailEntryPartialDownloadFlag	=0x10000000,
williamr@2
   673
		
williamr@2
   674
		KMsvEmailEntryICalendarFlag			=0x20000000
williamr@2
   675
		};
williamr@2
   676
williamr@2
   677
	};
williamr@2
   678
williamr@2
   679
const TUint16 KImMimeHeaderVersion = 2; // identify which version of this class has been stored
williamr@2
   680
williamr@2
   681
class CImMimeHeader : public CBase
williamr@2
   682
/** Stores a MIME email header. 
williamr@2
   683
@publishedAll
williamr@2
   684
@released
williamr@2
   685
*/
williamr@2
   686
	{
williamr@2
   687
public:
williamr@2
   688
	IMPORT_C static CImMimeHeader* NewLC();
williamr@2
   689
	IMPORT_C static CImMimeHeader* NewL();
williamr@2
   690
	IMPORT_C ~CImMimeHeader();
williamr@2
   691
	IMPORT_C void Reset();
williamr@2
   692
	IMPORT_C TInt Size();	// number of header fields stored in object
williamr@2
   693
williamr@2
   694
	// streaming operations
williamr@2
   695
	IMPORT_C void InternalizeL( RMsvReadStream& aReadStream );
williamr@2
   696
	IMPORT_C void ExternalizeL( RMsvWriteStream& aWriteStream ) const;
williamr@4
   697
	IMPORT_C void StoreWithoutCommitL(CMsvStore& aMessageStore) const;
williamr@2
   698
	IMPORT_C void RestoreL( CMsvStore& aMessageStore );
williamr@2
   699
	IMPORT_C void StoreL  ( CMsvStore& aMessageStore ) const;
williamr@4
   700
williamr@2
   701
williamr@2
   702
	/** Sets the Content-Type field value (e.g. "text" in Content-Type:text/plain). 
williamr@2
   703
	
williamr@2
   704
	The value is MIME defined and should always be 8-bit. 
williamr@2
   705
	
williamr@2
   706
	@param aPath Field value */
williamr@2
   707
	IMPORT_C void SetContentTypeL(const TDesC8& aPath);
williamr@2
   708
	IMPORT_C const TPtrC8 ContentType() const;
williamr@2
   709
williamr@2
   710
	/** Sets the Content-Type subtype field value (e.g. "plain" in Content-Type:text/plain). 
williamr@2
   711
	
williamr@2
   712
	
williamr@2
   713
	The value is MIME defined and should always be 8-bit. 
williamr@2
   714
	
williamr@2
   715
	@param aPath Field value */
williamr@2
   716
	IMPORT_C void SetContentSubTypeL(const TDesC8& aPath);
williamr@2
   717
	IMPORT_C const TPtrC8 ContentSubType() const;
williamr@2
   718
williamr@2
   719
	/** Sets the Content-Disposition field value (either inline or attachment). 
williamr@2
   720
	
williamr@2
   721
	The value is MIME defined and should always be 8-bit. 
williamr@2
   722
	
williamr@2
   723
	@param aPath Field value */
williamr@2
   724
	IMPORT_C void SetContentDispositionL(const TDesC8& aPath);
williamr@2
   725
	IMPORT_C const TPtrC8 ContentDisposition() const;
williamr@2
   726
williamr@2
   727
	/** Sets the Content-Description field value.
williamr@2
   728
	
williamr@2
   729
	The value is MIME defined and should always be 8-bit. 
williamr@2
   730
	
williamr@2
   731
	@param aPath Field value */
williamr@2
   732
	IMPORT_C void SetContentDescriptionL(const TDesC8& aPath);
williamr@2
   733
	IMPORT_C const TPtrC8 ContentDescription() const;
williamr@2
   734
williamr@2
   735
	/** Sets the Content-Base field value.
williamr@2
   736
	
williamr@2
   737
	@param aPath Field value */
williamr@2
   738
	IMPORT_C void SetContentBaseL(const TDesC8& aPath);
williamr@2
   739
	IMPORT_C const TPtrC8 ContentBase() const;
williamr@2
   740
williamr@2
   741
	/** Sets the Content-ID field value.
williamr@2
   742
	
williamr@2
   743
	@param aPath Field value */
williamr@2
   744
	IMPORT_C void SetContentIDL(const TDesC8& aPath);
williamr@2
   745
	IMPORT_C const TPtrC8 ContentID() const;
williamr@2
   746
williamr@2
   747
	/** Sets the Content-Location field value.
williamr@2
   748
	
williamr@2
   749
	@param aPath Field value */
williamr@2
   750
	IMPORT_C void SetContentLocationL(const TDesC16& aPath);
williamr@2
   751
	IMPORT_C const TPtrC16 ContentLocation() const;
williamr@2
   752
williamr@2
   753
	// IMAP-specific info describing relative location of entry w.r.t. parent Email message
williamr@2
   754
	/** Sets IMAP-specific information for the relative location of the entry to the 
williamr@2
   755
	parent email message.
williamr@2
   756
	
williamr@2
   757
	@param aPath Relative location */
williamr@2
   758
	IMPORT_C void SetRelativePathL(const TDesC8& aPath);
williamr@2
   759
	IMPORT_C const TPtrC8 RelativePath() const;
williamr@2
   760
williamr@2
   761
	/** Sets the Content-Transfer-Encoding field value.
williamr@2
   762
	
williamr@2
   763
	@param aType Field value */
williamr@2
   764
	IMPORT_C void SetContentTransferEncodingL(const TDesC8& aType);
williamr@2
   765
	IMPORT_C TImEncodingType ContentTransferEncoding() const;
williamr@2
   766
	IMPORT_C TImEncodingType ContentTransferEncoding(TDes8& rType) const;
williamr@2
   767
	IMPORT_C const TPtrC8 GetContentTypeValue(const TDesC8& aContentTypeParameter) const;
williamr@2
   768
williamr@2
   769
	// inlines to access arrays
williamr@2
   770
	inline const CDesC8Array& ContentTypeParams() const;
williamr@2
   771
	inline const CDesC8Array& ContentDispositionParams() const;
williamr@2
   772
	inline const CDesC8Array& XTypeParams() const;
williamr@2
   773
williamr@2
   774
	inline CDesC8Array& ContentTypeParams();
williamr@2
   775
	inline CDesC8Array& ContentDispositionParams();
williamr@2
   776
	inline CDesC8Array& XTypeParams();		// anything else that is in the header, but not recognised
williamr@2
   777
williamr@2
   778
	inline const TUint16 Version() const;
williamr@2
   779
	inline void SetVersion( TUint16 aVersion );
williamr@2
   780
williamr@2
   781
	IMPORT_C void SetMimeCharset(const TUint aCharset);
williamr@2
   782
	IMPORT_C TUint MimeCharset() const;
williamr@2
   783
williamr@2
   784
private:
williamr@2
   785
	CImMimeHeader();
williamr@2
   786
	void ConstructL();
williamr@2
   787
	TBool ArrayEntryExists(CDesCArray& aArray, TInt aField);
williamr@2
   788
williamr@4
   789
#if (defined SYMBIAN_MESSAGESTORE_HEADER_BODY_USING_SQLDB)
williamr@4
   790
	void ReStoreMimeDBL(CMsvStore& aMessageStore);
williamr@4
   791
	void StoreMimeDBL  (CMsvStore& aMessageStore) const;
williamr@4
   792
	void CreateMimeArrayListL(TPtrC16 astr1 ,TInt ai);
williamr@4
   793
	TInt BufSize() const;
williamr@4
   794
#endif 
williamr@2
   795
private:
williamr@2
   796
	TUint16 iVersion;
williamr@2
   797
	HBufC8* iRelativePath;
williamr@2
   798
	HBufC8* iContentDescription;
williamr@2
   799
williamr@2
   800
	TImEncodingType iContentTransferEncoding;
williamr@2
   801
williamr@2
   802
	// MHTML parameters
williamr@2
   803
	HBufC8* iContentBase;
williamr@2
   804
	HBufC16* iContentLocation;
williamr@2
   805
	HBufC8* iContentID;
williamr@2
   806
	//
williamr@2
   807
	HBufC8* iContentType;
williamr@2
   808
	HBufC8* iContentSubType;
williamr@2
   809
	HBufC8* iContentDisposition;
williamr@2
   810
	//
williamr@2
   811
	CDesC8Array* iContentTypeParams;			// zero or more "parameter"
williamr@2
   812
	CDesC8Array* iContentDispositionParams;		// zero or more "parameters"
williamr@2
   813
	CDesC8Array* iXTypeParams;					// zero or more X-Type "parameters"
williamr@2
   814
	//
williamr@2
   815
	TBuf<20> iContentTransferEncodingBuffer;	// must be big enough to store "quoted-printable" string
williamr@2
   816
williamr@2
   817
	// The uid value is always used in preference to the stored string.
williamr@2
   818
	// Only when the uid is not set is the string used when sending.
williamr@2
   819
	TUint iMimeCharset;	
williamr@2
   820
	};
williamr@2
   821
williamr@2
   822
williamr@2
   823
williamr@4
   824
/**
williamr@4
   825
 * Convert16to8L()
williamr@4
   826
 *
williamr@4
   827
 * Convert the 16 bit descripter to 8 bit.
williamr@4
   828
 * @param astr A descripter to be convert into 8 bit discripter.
williamr@4
   829
 * @return HBufC16* A 8 bit discripter.
williamr@4
   830
 */
williamr@4
   831
static inline HBufC8* Convert16to8L(TDesC16& aStr)//const
williamr@4
   832
	{
williamr@4
   833
	HBufC8* newFrom1 = HBufC8::NewL(aStr.Length());
williamr@4
   834
	newFrom1->Des().Copy(aStr);
williamr@4
   835
	return newFrom1;
williamr@4
   836
	}
williamr@4
   837
williamr@4
   838
williamr@4
   839
/**
williamr@4
   840
 * ConvertToTInt()
williamr@4
   841
 * 
williamr@4
   842
 * Converts a string to an integer.
williamr@4
   843
 * @param aStr A string to make Integer.
williamr@4
   844
 * @return TInt A integer value 
williamr@4
   845
 */
williamr@4
   846
static inline TInt ConvertToTInt(TDesC16& aStr)
williamr@4
   847
	{
williamr@4
   848
	TLex string(aStr);
williamr@4
   849
	TInt32 stringIntValue;
williamr@4
   850
	string.Val(stringIntValue);
williamr@4
   851
	return stringIntValue;
williamr@4
   852
	}
williamr@4
   853
williamr@4
   854
williamr@2
   855
#include <miuthdr.inl>
williamr@2
   856
williamr@2
   857
#endif // #defined __MIUTHDR_H__