epoc32/include/app/miutconv.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100
branchSymbian2
changeset 3 e1b950c65cb4
parent 2 epoc32/include/miutconv.h@2fe1408b6811
child 4 837f303aceeb
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
williamr@2
     1
// Copyright (c) 1999-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@2
     4
// 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
     5
// which accompanies this distribution, and is available
williamr@2
     6
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.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@2
    14
//
williamr@2
    15
williamr@2
    16
#ifndef __MIUTCONV_H__
williamr@2
    17
#define __MIUTCONV_H__
williamr@2
    18
williamr@2
    19
#include <e32base.h>
williamr@2
    20
williamr@2
    21
williamr@2
    22
#if !defined (__CHARCONV_H_)
williamr@2
    23
#include <charconv.h>
williamr@2
    24
#endif
williamr@2
    25
williamr@2
    26
#if !defined (__MIUTHDR_H__)
williamr@2
    27
#include <miuthdr.h>		
williamr@2
    28
#endif
williamr@2
    29
williamr@2
    30
#if !defined (__UTF_H_)
williamr@2
    31
#include <utf.h>
williamr@2
    32
#endif
williamr@2
    33
williamr@2
    34
// IMail-specific stream type within an IMail file store for TImEmailTransformingInfo
williamr@2
    35
//
williamr@2
    36
const TUint KUidMsvCharsetNone				= {0x10003C7F};		// 268450943
williamr@2
    37
const TUid KUidMsgFileTransformingInfo		= {0x100094A5};		// 268473509
williamr@2
    38
const TUid KUidMsgEmailGeneralCenRep		= {0x10285A25};		// 271079973
williamr@2
    39
williamr@2
    40
// No longer used as the charset information retrieved from resource file.
williamr@2
    41
// Might possibly needed in the future ? maybe
williamr@2
    42
// const TUid KUidMiutSystemDefaultCharset		= {0x10009418};		// 268473368
williamr@2
    43
// const TUid KUidMiutOverrideCharset			= {0x10009419};		// 268473369
williamr@2
    44
williamr@2
    45
_LIT8(KMiutUndisplayableChar, "?");
williamr@2
    46
williamr@2
    47
/** SMTP send methods. 
williamr@2
    48
@publishedAll
williamr@2
    49
@released
williamr@2
    50
*/
williamr@2
    51
enum TImSendMethod
williamr@2
    52
	{ 
williamr@2
    53
	/** Simple email. */
williamr@2
    54
	ESendAsSimpleEmail,
williamr@2
    55
	/** MIME email. */
williamr@2
    56
	ESendAsMimeEmail
williamr@2
    57
	};	
williamr@2
    58
williamr@2
    59
williamr@2
    60
// Information to be used when sending an email message.
williamr@2
    61
// Relating to how parts are encoded and converted.
williamr@2
    62
//
williamr@2
    63
class TImEmailTransformingInfo
williamr@2
    64
/** Encapsulates character conversion and encoding settings for sending SMTP email.
williamr@2
    65
williamr@2
    66
The default outcomes for header, body, HTML, and attachment parts respectively 
williamr@2
    67
for each of the listed categories are given below:
williamr@2
    68
williamr@2
    69
Plain Charset: ISO-8859-1,ISO-8859-1,N/A,N/A
williamr@2
    70
williamr@2
    71
Plain Encoding:None,None,N/A,UU
williamr@2
    72
williamr@2
    73
MIME Charset:UTF8,UTF8,UTF8*,N/A
williamr@2
    74
williamr@2
    75
MIME Encoding:B,QP,Base64,Base64
williamr@2
    76
williamr@2
    77
*: the UTF8 value set in the header field, but no conversion is done. The 
williamr@2
    78
HTML converter converts to UTF8. 
williamr@2
    79
@publishedAll
williamr@2
    80
@released
williamr@2
    81
*/
williamr@2
    82
	{
williamr@2
    83
public:
williamr@2
    84
    IMPORT_C TImEmailTransformingInfo& operator=(const TImEmailTransformingInfo& aInfo);
williamr@2
    85
    IMPORT_C TBool operator==(const TImEmailTransformingInfo& aInfo);
williamr@2
    86
	
williamr@2
    87
	// streaming operations
williamr@2
    88
	IMPORT_C void ExternalizeL( RWriteStream& aWriteStream ) const;
williamr@2
    89
	IMPORT_C void InternalizeL( RReadStream& aReadStream );
williamr@2
    90
	IMPORT_C void StoreL( CMsvStore& aStore ) const;
williamr@2
    91
	IMPORT_C void RestoreL( CMsvStore& aStore );
williamr@2
    92
williamr@2
    93
	// Setting functions
williamr@2
    94
	IMPORT_C void SetToDefault(const TImSendMethod aMethod);
williamr@2
    95
	IMPORT_C void SetSendMethod(const TImSendMethod aMethod);
williamr@2
    96
	IMPORT_C TImSendMethod SendMethod() const;
williamr@2
    97
williamr@2
    98
	IMPORT_C void SetHeaderEncodingQ();
williamr@2
    99
	IMPORT_C void SetHeaderEncodingB();
williamr@2
   100
	IMPORT_C void SetBodyTextEncoding(TImEncodingType aType);
williamr@2
   101
	IMPORT_C void SetHTMLEncoding(TImEncodingType aType);
williamr@2
   102
	IMPORT_C void SetAttachmentEncoding(TImEncodingType aType);
williamr@2
   103
	
williamr@2
   104
	IMPORT_C void SetHeaderAndBodyCharset(TUint aCharset);
williamr@2
   105
	IMPORT_C void SetHeaderCharset(TUint aCharset);
williamr@2
   106
	IMPORT_C void SetBodyTextCharset(TUint aCharset);
williamr@2
   107
	IMPORT_C void SetHTMLCharset(TUint aCharset);
williamr@2
   108
williamr@2
   109
	// Accessor functions
williamr@2
   110
	IMPORT_C TImEncodingType HeaderEncoding() const;
williamr@2
   111
	IMPORT_C TImEncodingType BodyTextEncoding() const;
williamr@2
   112
	IMPORT_C TImEncodingType HTMLEncoding() const;
williamr@2
   113
	IMPORT_C TImEncodingType AttachmentEncoding() const;
williamr@2
   114
	
williamr@2
   115
	IMPORT_C TUint HeaderCharset() const;
williamr@2
   116
	IMPORT_C TUint BodyTextCharset() const;
williamr@2
   117
	IMPORT_C TUint HTMLCharset() const;
williamr@2
   118
williamr@2
   119
private:
williamr@2
   120
	void SetHeaderEncoding(TImEncodingType aType);
williamr@2
   121
williamr@2
   122
private:
williamr@2
   123
	TImEncodingType	iHeaderEncoding;	
williamr@2
   124
	TImEncodingType	iBodyEncoding;	
williamr@2
   125
	TImEncodingType	iHTMLEncoding;	
williamr@2
   126
	TImEncodingType	iAttachmentEncoding;	
williamr@2
   127
williamr@2
   128
	TUint	iHeaderCharset;	
williamr@2
   129
	TUint	iBodyCharset;	
williamr@2
   130
	TUint	iHTMLCharset;	
williamr@2
   131
	TUint	iTextAttachmentCharset;	
williamr@2
   132
williamr@2
   133
	TImSendMethod iSendMethod;
williamr@2
   134
	};
williamr@2
   135
williamr@2
   136
williamr@2
   137
// Default Sending Charset/Encoding Values
williamr@2
   138
const TImEncodingType KDefaultMIMEHeaderEncoding	=	EEncodingTypeBASE64;		// MIME
williamr@2
   139
const TImEncodingType KDefaultMIMEBodyTextEncoding	=	EEncodingTypeQP;
williamr@2
   140
const TImEncodingType KDefaultMIMEHTMLEncoding		=	EEncodingTypeBASE64;
williamr@2
   141
const TImEncodingType KDefaultMIMEAttachmentEncoding=	EEncodingTypeBASE64;
williamr@2
   142
williamr@2
   143
#define KDefaultPlainCharset		KCharacterSetIdentifierIso88591
williamr@2
   144
williamr@2
   145
const TImEncodingType	KDefaultPlainHeaderEncoding		=	EEncodingTypeNone;	// Non-MIME or Plain
williamr@2
   146
const TImEncodingType	KDefaultPlainBodyTextEncoding	=	EEncodingTypeNone;
williamr@2
   147
const TImEncodingType KDefaultPlainAttachmentEncoding	=	EEncodingTypeUU;
williamr@2
   148
williamr@2
   149
williamr@2
   150
williamr@2
   151
williamr@2
   152
// Wrapper class for CHARCONV.
williamr@2
   153
// 'Our' charset dependant on build, UNICODE or CodePage 1252.
williamr@2
   154
//
williamr@2
   155
class CImConvertCharconv : public CBase
williamr@2
   156
/**
williamr@2
   157
@internalTechnology
williamr@2
   158
@released
williamr@2
   159
*/
williamr@2
   160
	{
williamr@2
   161
public:	
williamr@2
   162
	IMPORT_C static CImConvertCharconv* NewL(CCnvCharacterSetConverter& aConverter, RFs& anFs);
williamr@2
   163
	~CImConvertCharconv();
williamr@2
   164
williamr@2
   165
	// MUST call prepare function first.
williamr@2
   166
	IMPORT_C TInt ConvertToOurCharsetL( const TDesC8& aBufIn, TDes& rBufOut, 
williamr@2
   167
										TInt& rNumUnconvertedChars, 
williamr@2
   168
										TInt& rIndexOfFirstUnconvertedChar);
williamr@2
   169
	IMPORT_C TInt ConvertFromOurCharsetL(const TDesC& aBufIn, TDes8& rBufOut, 
williamr@2
   170
										 TInt& rNumUnconvertedChars,
williamr@2
   171
										 TInt& rIndexOfFirstUnconvertedChar);
williamr@2
   172
williamr@2
   173
	// MUST be called prior to calling above two functions.
williamr@2
   174
	IMPORT_C TInt PrepareToConvertToFromOurCharsetL(const TUint aUid);
williamr@2
   175
williamr@2
   176
	IMPORT_C TUint GetMimeCharsetUidL(const TDesC8& aBufIn) const;
williamr@2
   177
	IMPORT_C HBufC8* GetMimeCharsetTextStringL(const TUint& aUid) const;
williamr@2
   178
	IMPORT_C TUint DefaultCharset() const;
williamr@2
   179
	IMPORT_C TUint SystemDefaultCharset() const;
williamr@2
   180
williamr@2
   181
	static TInt StraightCopy( const TDesC8& aBufIn, TDes& rBufOut);
williamr@2
   182
	static TInt StraightCopy( const TDesC& aBufIn, TDes8& rBufOut);
williamr@2
   183
private:
williamr@2
   184
	void ConstructL();
williamr@2
   185
	CImConvertCharconv(CCnvCharacterSetConverter& aConverter, RFs& anFs);
williamr@2
   186
	TBool CharsetAvailable(const TUint aUid);
williamr@2
   187
	void SetSystemDefaultCharsetL();
williamr@2
   188
williamr@2
   189
	TInt GetSystemCharsetFromCenRepL(TDes8& aMimeCharSet);
williamr@2
   190
williamr@2
   191
	enum TEmailGeneralSettingsCenRepId
williamr@2
   192
		{
williamr@2
   193
		EEmailGeneralCharSetId				= 0x00000000
williamr@2
   194
		};
williamr@2
   195
williamr@2
   196
private:
williamr@2
   197
	CCnvCharacterSetConverter& iConverter;
williamr@2
   198
	CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* iCharsetsAvailable; 
williamr@2
   199
williamr@2
   200
	RFs& iFs;
williamr@2
   201
	TUint iCharsetUid;
williamr@2
   202
	TUint iSystemDefaultCharset;		// Value obtained from .ini file
williamr@2
   203
	TInt  iCharconvState;
williamr@2
   204
	};
williamr@2
   205
williamr@2
   206
#endif