1.1 --- a/epoc32/include/miutmsg.h Tue Mar 16 16:12:26 2010 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,950 +0,0 @@
1.4 -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 -// All rights reserved.
1.6 -// This component and the accompanying materials are made available
1.7 -// 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
1.8 -// which accompanies this distribution, and is available
1.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
1.10 -//
1.11 -// Initial Contributors:
1.12 -// Nokia Corporation - initial contribution.
1.13 -//
1.14 -// Contributors:
1.15 -//
1.16 -// Description:
1.17 -//
1.18 -
1.19 -#ifndef __MIUTMSG_H__
1.20 -#define __MIUTMSG_H__
1.21 -
1.22 -#include <msvstd.h>
1.23 -#include <msvapi.h> // TMsvEntry, CMsvOperation etc
1.24 -#include <mentact.h> // CMsgActive
1.25 -#include <miuthdr.h> // CImHeader, CImMimeHeader
1.26 -#include <txtrich.h> // CRichText etc
1.27 -#include <miutdef.h> // CImHeader, CImMimeHeader
1.28 -#include <mtmdef.h>
1.29 -#include <miutatch.h>
1.30 -#include <smtpset.h>
1.31 -#include <miutpars.h> // TImMessageField
1.32 -
1.33 -#include <barsc.h> // RResourceFile
1.34 -#include <conarc.h>
1.35 -#include <conlist.h>
1.36 -
1.37 -#include <txtmrtsr.h>
1.38 -
1.39 -
1.40 -
1.41 -//#include <mmsvattachmentmanager.h>
1.42 -#include <s32mem.h>
1.43 -
1.44 -//Content-Transfer-Encoding: types
1.45 -_LIT8(KMimeQuotedPrintable, " quoted-printable");
1.46 -_LIT8(KMimeApplOctet, " application/octet-stream");
1.47 -_LIT8(KMime7Bit, " 7-bit");
1.48 -_LIT8(KMimeBase64, " base64");
1.49 -_LIT8(KMimeMime, "MIME*");
1.50 -// Content-Disposition: types
1.51 -_LIT8(KMimeInline, "inline");
1.52 -_LIT8(KMimeAttachment, "attachment");
1.53 -// Content-Type: types
1.54 -_LIT8(KMimeMultipart, "multipart");
1.55 -_LIT8(KMimeText, "text");
1.56 -_LIT8(KMimeImage, "image");
1.57 -_LIT8(KMimeAudio, "audio");
1.58 -_LIT8(KMimeVideo, "video");
1.59 -_LIT8(KMimeApplication, "application");
1.60 -_LIT8(KMimeMessage, "message");
1.61 -// Content-Type: Multipart types
1.62 -_LIT8(KMimeMixed, "mixed");
1.63 -_LIT8(KMimeRelated, "related");
1.64 -_LIT8(KMimeAlternative, "alternative");
1.65 -_LIT8(KMimeEncrypted, "encrypted");
1.66 -_LIT8(KMimeParallel, "parallel");
1.67 -_LIT8(KMimeDigest, "digest");
1.68 -_LIT8(KMimeSigned, "signed");
1.69 -// Content-Type: Text types
1.70 -_LIT8(KMimeHtml, "html");
1.71 -_LIT8(KMimePlain, "plain");
1.72 -_LIT8(KMimeDirectory, "directory");
1.73 -// Content-Type: Message types
1.74 -_LIT8(KMimePartial, "partial");
1.75 -_LIT8(KMimeExternal, "external-body");
1.76 -_LIT8(KMimeRfc822, "rfc822");
1.77 -// Content-Type: Directory types
1.78 -_LIT8(KMimeProfile, "profile");
1.79 -_LIT(KMimeVCardExtension, ".vcf");
1.80 -_LIT8(KMimeVCalender, "vcalendar");
1.81 -// Content-Type: Image, Audio, Video, Application types
1.82 -_LIT8(KMimeBmp, "bmp");
1.83 -_LIT8(KMimeGif, "gif");
1.84 -_LIT8(KMimeJpeg, "jpeg");
1.85 -_LIT8(KMimeTiff, "tiff");
1.86 -_LIT8(KMimeWav, "wav");
1.87 -_LIT8(KMimeZip, "x-gzip");
1.88 -_LIT(KMimeHtmlExtension, ".html");
1.89 -_LIT(KMiutMsgDefaultHtmlFileName, "attachment.html");
1.90 -const TUid KUidMimeHeaders = {0x10204281};
1.91 -
1.92 -class CImHtmlConverter;
1.93 -
1.94 -class CImAttachmentManager;
1.95 -class CMsvMimeHeaders;
1.96 -class CMsvPlainBodyText;
1.97 -class CImPlainBodyText;
1.98 -
1.99 -class TImCreateMessageOptions
1.100 -/**
1.101 -@internalComponent
1.102 -@released
1.103 -*/
1.104 - {
1.105 -public:
1.106 - TMsvPartList iMsvPartList;
1.107 - TMsvEmailTypeList iMsvEmailTypeList;
1.108 - TUid iMessageType;
1.109 - };
1.110 -
1.111 -// Mixin provides interface to Browser control to resolve MHTML URIs.
1.112 -
1.113 -class MImURITranslator
1.114 -/** Translates a URI in an MHTML message into a message body part file name.
1.115 -
1.116 -MHTML messages may contain multiple HTML body parts. Each of these body parts
1.117 -is able to reference another body part within the same multipart structure,
1.118 -or a body part within a parent multipart structure [RFC2110]. These references
1.119 -are called URI's.
1.120 -
1.121 -When an MHTML message is parsed by the message engine, the HTML body of each
1.122 -part is stored as a binary file. This interface provides a means of finding
1.123 -the file name of the body part that corresponds to a given a URI.
1.124 -
1.125 -The URI resolving process has the potential to become time consuming, therefore
1.126 -it is broken into two steps:
1.127 -
1.128 -Resolve asynchronously the relative URI into an absolute URI. The message
1.129 -body parts are recursively searched in order to find an absolute base for
1.130 -the relative URI [RFC2110, RFC1808].
1.131 -
1.132 -Once a relative URI has been resolved in to an absolute URI, then the message
1.133 -is searched for a body part that corresponds to it [RFC2110].
1.134 -
1.135 -If no matching body part can be found, then the absolute URI is returned to
1.136 -the caller in place of the filename. This absolute URI should be used to search
1.137 -for the required data externally, for example by using HTTP.
1.138 -
1.139 -@see CImEmailMessage
1.140 -@publishedAll
1.141 -@released
1.142 -*/
1.143 - {
1.144 -public:
1.145 - /** Starts an asynchronous operation to resolve a specified URI.
1.146 -
1.147 - @param aMessageId The ID of the body part containing the URI which is to be
1.148 - resolved. CImEmailMessage::FindFirstHTMLPageL() can be used to find the aMessageId
1.149 - parameter for the first HTML page in a message.
1.150 - @param rBase The base parameter from the HTML part that contains the URI to
1.151 - be resolved. If there is no base parameter in the HTML, then an empty descriptor
1.152 - should be passed in.
1.153 - @param rURI The URI to be resolved.
1.154 - @param aStatus Asynchronous status word */
1.155 - virtual void FindUniversalResourceIdentifierL(TMsvId aMessageId, const TDesC& rBase, const TDesC& rURI, TRequestStatus &aStatus) = 0;
1.156 -
1.157 - /** Gets the results after a search.
1.158 -
1.159 - @param aLinkedEntryId On return, the message ID of the linked body part, providing
1.160 - one is found. Note that you should keep a record of the returned message ID
1.161 - as it is required for resolving any URI's that may be found in the linked
1.162 - body part.
1.163 - @param aFileFound On return, true if a linked body part has been found. It
1.164 - is set to false otherwise.
1.165 - @return If successful, the filename that corresponds to the URI, or the absolute
1.166 - URI if no matching file can be found. If failed, NULL. */
1.167 - virtual HBufC* GetUniversalResourceIdentifierL(TMsvId& aLinkedEntryId, TBool& aFileFound) const = 0;
1.168 -
1.169 - /** Starts an asynchronous operation to resolve a specified URI.
1.170 -
1.171 - @param aMessageId The ID of the body part containing the URI which is to be
1.172 - resolved. CImEmailMessage::FindFirstHTMLPageFileHandleL() can be used to find the aMessageId
1.173 - parameter for the first HTML page in a message.
1.174 - @param aBase The base parameter from the HTML part that contains the URI to
1.175 - be resolved. If there is no base parameter in the HTML, then an empty descriptor
1.176 - should be passed in.
1.177 - @param aURI The URI to be resolved.
1.178 - @param aStatus Asynchronous status word */
1.179 - virtual void FindUniversalResourceIdentifierFileHandleL(TMsvId aMessageId, const TDesC& aBase, const TDesC& aURI, TRequestStatus &aStatus) = 0;
1.180 -
1.181 - /** Gets the results after a search.
1.182 -
1.183 - @param aLinkedEntryId On return, the message ID of the linked body part, providing
1.184 - one is found. Note that you should keep a record of the returned message ID
1.185 - as it is required for resolving any URI's that may be found in the linked
1.186 - body part.
1.187 -
1.188 - @param aFile On return, the file handle corresponding to the URI if successful.
1.189 - If not successful, then this is not valid.
1.190 -
1.191 - @return KErrNone if successful and therefore aFile contains the filehandle
1.192 - that corresponds to the URI. An error code if unsuccessful and therefore
1.193 - aFile is not valid. */
1.194 - virtual TInt GetUniversalResourceIdentifierFileHandle(TMsvId& aLinkedEntryId, RFile& aFile) const = 0;
1.195 - };
1.196 -
1.197 -
1.198 -
1.199 -
1.200 -class CImMhtmlUriResolver;
1.201 -class CImRemoveMessagePart;
1.202 -class CImStoreMessagePart;
1.203 -class CImMimeHeader;
1.204 -
1.205 -class CImEmailMessage : public CMsgActive , public MImURITranslator
1.206 -/**
1.207 -This class can be used to manipulate new emails that
1.208 -have been created using CImEmailOperation when composing a message.
1.209 -
1.210 -Use an instance of this class to add attachments, MHTML parts, body
1.211 -text, and existing messages to a new message before it is to be sent.
1.212 -
1.213 -This class can also be used to retrieve the body text, list of attachments,
1.214 -and embedded messages from emails that have been downloaded and stored within
1.215 -the message store.
1.216 -
1.217 -If the store_8bit_body_text flag in imcm.rss is enabled, an instance of this class
1.218 -can be used to retrieve the original body text character set for a particular message.
1.219 -It can also be used to override the original body text character set so it will
1.220 -be decoded in a new character set next time it is viewed.
1.221 -
1.222 -@see CImEmailOperation
1.223 -
1.224 -@publishedAll
1.225 -@released
1.226 -*/
1.227 - {
1.228 -public:
1.229 - /** Flags that specify to process on any messages embedded in this message. */
1.230 - enum TImEmailEntryType
1.231 - {
1.232 - /** Do not process embedded messages. */
1.233 - EThisMessageOnly,
1.234 - /** Process embedded messages. */
1.235 - EThisMessageAndEmbeddedMessages // i.e messages with in a message
1.236 - };
1.237 - /** Flags to specify types of attachment. */
1.238 - enum TImAttachmentType
1.239 - {
1.240 - /** All attachments. */
1.241 - EAllAttachments=0, // all attachment files contained within this message (but not inside messages within this message)
1.242 - /** VCards. */
1.243 - EVCards,
1.244 - /** VCalendars. */
1.245 - EVCalendars,
1.246 - /** VCards, VCalendars and ICalendars. */
1.247 - EVEntries, // ie VCards, VCalendars or ICalendars (or all three)
1.248 - /** Encrypted. */
1.249 - EEncrypted,
1.250 - /** Signed. */
1.251 - ESigned,
1.252 - /** Secure. */
1.253 - ESecure, // ie Encrypted or signed (or both)
1.254 - /** ICalendars. */
1.255 - EICalendars
1.256 - //.. add new items here
1.257 - };
1.258 -public:
1.259 - IMPORT_C static CImEmailMessage* NewL(CMsvEntry& aEntry);
1.260 - IMPORT_C static CImEmailMessage* NewLC(CMsvEntry& aEntry);
1.261 - IMPORT_C ~CImEmailMessage();
1.262 -
1.263 - IMPORT_C void GetAttachmentsListL(TRequestStatus& aStatus, TMsvId aMessageId, TImAttachmentType aAttachmentType,TImEmailEntryType aEntryType);
1.264 - IMPORT_C void GetAttachmentsListL(TMsvId aMessageId, TImAttachmentType aAttachmentType,TImEmailEntryType aEntryType);
1.265 - void DoGetAttachmentsListL(TMsvId aMessageId, TImAttachmentType aAttachmentType,TImEmailEntryType aEntryType);
1.266 -
1.267 - IMPORT_C void FindFirstHTMLPageL(TMsvId aMessageId, TRequestStatus& aStatus);
1.268 -
1.269 - IMPORT_C const CMsvEntrySelection& Selection() const; // return selection
1.270 - IMPORT_C const TDesC8& ProgressL() const;
1.271 -
1.272 - IMPORT_C void GetBodyTextL(TRequestStatus& aStatus, TMsvId aMessageId, TImEmailEntryType aEntryType, CRichText& aRichText,CParaFormatLayer& aParaLayer,CCharFormatLayer& aCharLayer);
1.273 - IMPORT_C void GetBodyTextL(TMsvId aMessageId, TImEmailEntryType aEntryType, CRichText& aRichText,CParaFormatLayer& aParaLayer,CCharFormatLayer& aCharLayer);
1.274 - void DoGetBodyTextInitL(TMsvId aMessageId, TImEmailEntryType aEntryType, CRichText& aRichText,CParaFormatLayer& aParaLayer, CCharFormatLayer& aCharLayer);
1.275 -
1.276 - IMPORT_C void GetBodyTextEntryIdL(TRequestStatus& aStatus, TMsvId aMessageId, TImEmailEntryType aEntryType);
1.277 - IMPORT_C void GetBodyTextEntryIdL(TMsvId aMessageId, TImEmailEntryType aEntryType);
1.278 -
1.279 - IMPORT_C CImPlainBodyText* OpenPlainBodyTextForWriteL();
1.280 -
1.281 - IMPORT_C CImPlainBodyText* OpenPlainBodyTextForReadL(TImEmailEntryType aEntryType, TInt aChunkLength);
1.282 -
1.283 - IMPORT_C virtual void FindUniversalResourceIdentifierL(TMsvId aMessageId, const TDesC& aBase, const TDesC& aURI, TRequestStatus &aStatus);
1.284 - IMPORT_C virtual HBufC* GetUniversalResourceIdentifierL(TMsvId& aLinkedEntryId, TBool& aFileFound) const;
1.285 - IMPORT_C void FindUniversalResourceIdentifierFileHandleL(TMsvId aMessageId, const TDesC& aBase, const TDesC& aURI, TRequestStatus &aStatus);
1.286 - IMPORT_C void FindFirstHTMLPageFileHandleL(TMsvId aMessageId, TRequestStatus& aStatus);
1.287 - IMPORT_C virtual TInt GetUniversalResourceIdentifierFileHandle(TMsvId& aLinkedEntryId, RFile& aFile) const;
1.288 - IMPORT_C MMsvAttachmentManager& AttachmentManager() const;
1.289 - void AddAttachmentL(const TDesC& aFilePath, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
1.290 - void AddAttachmentL(RFile& aFileHandle, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
1.291 - void AddLinkedAttachmentL(const TDesC& aFilePath, CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus);
1.292 - void AddEntryAsAttachmentL(TMsvId aAttachmentEntryId, CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus);
1.293 - const RPointerArray<CMsvAttachment>& AttachmentInfoSelection() const;
1.294 - void RemoveAttachmentL(TMsvAttachmentId aAttachmentId,TRequestStatus& aStatus) ;
1.295 - void RemoveAttachedMessageL(TMsvAttachmentId aAttachmentId,TRequestStatus& aStatus) ;
1.296 - void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
1.297 - void CheckEntryAndResetStoreMessageL(TMsvId aMessageId);
1.298 - void CheckEntryAndResetRemoveMessageL(TMsvId aMessageId);
1.299 - void DoSetActive(TRequestStatus& aStatus);
1.300 - CImMimeHeader* ConvertToImMimeHeadersL(CMsvMimeHeaders* aMimeHeaders);
1.301 - CMsvMimeHeaders* ConvertToMsvMimeHeadersL(CImMimeHeader* aMimeHeader);
1.302 - void AppendEntryAttachmentInfoL();
1.303 - IMPORT_C void AddRelatedPartL(TMsvId aMessageId, const TDesC& aAttachmentFullName, TRequestStatus& aStatus, TMsvId aRelatedPartId, const TDesC8& aContentId);
1.304 - IMPORT_C void StoreBodyTextL(TMsvId aMessageId, CRichText& aRichText, TRequestStatus& aStatus);
1.305 - IMPORT_C void StoreBodyTextL(TMsvId aMessageId, CRichText& aRichText, TRequestStatus& aStatus, TBool aUsePlainTextStorage);
1.306 - IMPORT_C void GetMessageDigestEntriesL(TRequestStatus& aStatus, TMsvId aMessageId);
1.307 - IMPORT_C void GetCharacterSetL(TMsvId aMessageId, TUint& aCharacterSetId, TBool& aOverride);
1.308 - IMPORT_C void SetCharacterSetL(TMsvId aMessageId, TUint aCharacterSetId);
1.309 - IMPORT_C void StoreBodyTextWithMimeHeaderL(TMsvId aMessageId, CRichText& aRichText, const CImMimeHeader& aMimeHeader, TRequestStatus& aStatus);
1.310 -
1.311 - TMsvId EmailEntryId();
1.312 -
1.313 -private:
1.314 - void DoRunL();
1.315 - void DoCancel();
1.316 - CImEmailMessage(CMsvEntry& aEntry);
1.317 - void ConstructL();
1.318 - void DoComplete(TInt&);
1.319 - void DoStateL();
1.320 -
1.321 - void Start(TRequestStatus& aStatus);
1.322 - void StartL();
1.323 -
1.324 - void Reset();
1.325 - void ChangeMessageContextL();
1.326 - void CompareChildrenAndPopulateSelL();
1.327 - void AttachmentInfoL();
1.328 - void AssembleBodyTextL();
1.329 - void CheckAndInitialiseL(TMsvId aMessageId);
1.330 -
1.331 - void AppendAttachmentL();
1.332 - TBool MessageDigestEntry();
1.333 - TBool HandleDifferentFolderTypesL();
1.334 - void GetTextForAlternateFolderL();
1.335 - void GetTextForRelatedFolderL();
1.336 - void GetAttachmentsForRelatedFolderL();
1.337 - TBool GetBodyTextCharacterSetL();
1.338 - TUint GetOverrideCharacterSetL();
1.339 - TInt FindFilename(const CImMimeHeader& aMimeInfo, TPtrC8& aFilename);
1.340 - void FindFilenameDecodeL(
1.341 - const CImMimeHeader& aMimeInfo, TFileName& aFileName, TUint aCharset);
1.342 - void AppendAttachmentNameL();
1.343 - void SetBodyTextCharacterSetL(TMsvId aEntryId, TUint8 aNewCharacterSetId);
1.344 - void FindFirstBodyTextPartL(TMsvId aEntryId, TBool& found);
1.345 -
1.346 - CImMimeHeader* FindAttachmentMimeHeaderL();
1.347 - TMsvEntry FindIdEntryL(TMsvId aMessageId);
1.348 -
1.349 - void DoGetBodyTextEntryIdL(TMsvId aMessageId, TImEmailEntryType aEntryType);
1.350 -
1.351 -
1.352 - enum TImEmailMessageStates
1.353 - {
1.354 - EIdle=0,
1.355 - ETextForThisMsg,
1.356 - ETextForMsgDigest,
1.357 - ETextEntryIdForThisMsg,
1.358 - ETextEntryIdMsgDigest,
1.359 - ETextForThisMsgGetCharacterSet,
1.360 - EAttachmentsForThisMsg,
1.361 - EAttachmentsForMsgDigest,
1.362 - EMsgDigestEntries,
1.363 - EResolveURI,
1.364 - EStoreMessagePart,
1.365 - ERemoveMessagePart,
1.366 - EFinished
1.367 - };
1.368 - CMsvEntry& iClientEntry;
1.369 - CMsvEntrySelection* iCompleteSel;
1.370 - CMsvEntrySelection* iResultSel;
1.371 -
1.372 - CRichText* iRichText;
1.373 - CParaFormatLayer* iParaLayer;
1.374 - CCharFormatLayer* iCharLayer;
1.375 - TMsvId iParentMsgId; // the Id passed into Getxxx() function representing the 'parent' message ID
1.376 - TImEmailMessageStates iState;
1.377 - TImAttachmentType iAttachmentType;
1.378 - TMsvEmailEntry iEntry;
1.379 - CImMhtmlUriResolver* iUriResolver;
1.380 - TBool iUriFileFound;
1.381 - CImStoreMessagePart* iStoreMessagePart;
1.382 - CImRemoveMessagePart* iRemoveMessagePart;
1.383 - TPckgBuf<TMsvId> iProgress;
1.384 - TImEmailEntryType iEntryType;
1.385 - TBool iIsAMHTMLmessage;
1.386 - TUint iCharacterSetId;
1.387 - RFs iFs;
1.388 - CDesCArray* iAttachmentNameList;
1.389 - CImAttachmentManager* iAttachmentManager;
1.390 - CMsvStore* iStore;
1.391 -
1.392 - // This is the entry Id using which the CImEmailMessage was created.
1.393 - // store this , so that when the message id to which attachment is
1.394 - // retrieved then the CIMEmailMessage is reset with this Id.
1.395 - TMsvId iEmailEntryId;
1.396 - enum TImAttachmentStates
1.397 - {
1.398 - ENoAttachment=0,
1.399 - EAddAttachment,
1.400 - EDeleteAttachment,
1.401 - ECreateAttachment
1.402 - };
1.403 - TInt iAttachmentState;
1.404 -
1.405 - };
1.406 -
1.407 -class CImRemoveMessagePart : public CMsvOperation
1.408 -/**
1.409 -@internalComponent
1.410 -@released
1.411 -*/
1.412 - {
1.413 -public:
1.414 - static CImRemoveMessagePart* DeleteAttachmentL(TRequestStatus &aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, TMsvId aAttachmentId);
1.415 - static CImRemoveMessagePart* DeleteAttachedMessageL(TRequestStatus &aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, TMsvId aAttachedMessageId);
1.416 - ~CImRemoveMessagePart();
1.417 - const TDesC8& FinalProgress();
1.418 - void DoCancel();
1.419 - void RunL();
1.420 - const TDesC8& ProgressL(); // returns NULL until operation completed - then returns MessageId
1.421 - TMsvId RemovedAttachmentId();
1.422 -private:
1.423 - CImRemoveMessagePart(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId);
1.424 - void ConstructL(TMsvId aAttachmentId);
1.425 - void ErrorRecovery(TInt aError);
1.426 - void SelectNextStateL(); // selects next state to go to
1.427 - void ChangeStateL(); // initiates the next state operation
1.428 - void SelectAndChangeToNextStateL();
1.429 - void RequestComplete(TInt aError);
1.430 - void Recover(); // leave message in a 'good' state
1.431 -
1.432 - void CheckAttachmentParentTypeL();
1.433 - void MoveOtherEntryToParentOfFolderL();
1.434 - void DeleteAttachmentEntryL();
1.435 - void DeleteFolderEntryL();
1.436 - void CompleteRemoveMessagePartL();
1.437 -private:
1.438 - enum TImRemoveMessagePartState
1.439 - {
1.440 - ECheckAttachmentParentType,
1.441 - EMoveOtherEntryToParentOfFolder,
1.442 - EDeleteAttachmentEntry,
1.443 - EDeleteFolderEntry,
1.444 - ECompleteRemoveMessagePart,
1.445 - EFinished
1.446 - };
1.447 - CMsvEntry& iMsvEntry;
1.448 - CMsvOperation* iMsvOperation;
1.449 -
1.450 - CMsvEntrySelection* iMessageEntrySelection;
1.451 - CImEmailMessage* iEmailMessage;
1.452 -
1.453 - TInt iState;
1.454 - TPckgBuf<TMsvId> iDataMember;
1.455 - TMsvId iMessageId;
1.456 - TMsvId iFolderToDeleteId;
1.457 - TInt iAttachmentSize;
1.458 - TMsvId iAttachmentId;
1.459 - TMsvId iEntryToMoveId;
1.460 - };
1.461 -
1.462 -class CImStoreMessagePart : public CMsvOperation
1.463 -/**
1.464 -@internalComponent
1.465 -@released
1.466 -*/
1.467 - {
1.468 -public:
1.469 - static CImStoreMessagePart* AddAttachmentL(TMsvId aMessageId, const TDesC& aFilePath, CMsvEntry& aMsvEntry,CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus );
1.470 - static CImStoreMessagePart* AddEntryAsAttachmentL(TMsvId aMessageId,TMsvId aAttachmentMessageId, CMsvEntry& aMsvEntry, CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus);
1.471 - static CImStoreMessagePart* AddAttachmentL(TMsvId aMessageId,RFile& aFile, CMsvEntry& aMsvEntry, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
1.472 - static CImStoreMessagePart* AddLinkedAttachmentL(TMsvId aMessageId,const TDesC& aFilePath, CMsvEntry& aMsvEntry,CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus );
1.473 - static CImStoreMessagePart* CreateAttachmentL(TMsvId aMessageId,const TDesC& aFileName, RFile& aAttachmentFile,CMsvEntry& aMsvEntry, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
1.474 - static CImStoreMessagePart* AddRelatedPartL(TRequestStatus &aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, const TDesC& aAttachmentFullName, TMsvId aRelatedPartId, const TDesC8& aContentId);
1.475 - static CImStoreMessagePart* StoreBodyTextL(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, CRichText& aRichText, TBool aUsePlainTextStorage = EFalse);
1.476 - static CImStoreMessagePart* StoreBodyTextWithMimeHeaderL(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, CRichText& aRichText, const CImMimeHeader& aMimeHeader, TBool aUsePlainTextStorage = EFalse);
1.477 - static CImStoreMessagePart* StorePlainBodyTextL(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, TBool aUsePlainTextStorage = ETrue);
1.478 - static CImStoreMessagePart* StorePlainBodyTextL(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, CImMimeHeader& aMimeHeader, TBool aUsePlainTextStorage = ETrue);
1.479 - ~CImStoreMessagePart();
1.480 - const TDesC8& FinalProgress();
1.481 - void DoCancel();
1.482 - void RunL();
1.483 - const TDesC8& ProgressL();
1.484 -private:
1.485 - enum TImMessagePart
1.486 - {
1.487 - EMessagePartAttachment,
1.488 - EMessagePartBody,
1.489 - EMessagePartMessageAttachment
1.490 - };
1.491 - void ConstructL(RFile& aFile);
1.492 - void ConstructL(RFile& aFile,const TDesC& aAttachmentName);
1.493 - void ConstructL(const TDesC& aAttachmentFullName, const TDesC8& aContentId);
1.494 - void ConstructAttachmentInfo(CMsvAttachment* aAttachmentInfo,TInt aAttachmentCreationState);
1.495 - CImStoreMessagePart(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, TBool aUsePlainTextStorage = EFalse);
1.496 -
1.497 - void ConstructL();
1.498 - void ConstructL(const TDesC& aAttachmentFullName);
1.499 - void ConstructL(TMsvId aAttachmentMessageId);
1.500 - void ConstructL(const TDesC& aAttachmentFullName, TMsvId aRelatedPartId, const TDesC8& aContentId);
1.501 - void ConstructL(CRichText& aRichText);
1.502 - void ConstructL(CRichText& aRichText, const CImMimeHeader& aMimeHeader);
1.503 - void ConstructL(CImMimeHeader& aMimeHeader);
1.504 - void ConstructL(TImMessagePart aMessagePart);
1.505 - void ErrorRecovery(TInt error);
1.506 - void SelectNextStateL(); // selects next state to go to
1.507 - void ChangeStateL(); // initiates the next state operation
1.508 - void SelectAndChangeToNextStateL();
1.509 - void RequestComplete(TInt aError);
1.510 - void Recover();
1.511 -
1.512 - TBool HTMLMessage() const;
1.513 - void SetHTMLMessage(TBool aFlag);
1.514 - TBool MultipartMixedExists() const;
1.515 - void SetMultipartMixedExists(TBool aFlag);
1.516 - TBool MultipartMixedCreated() const;
1.517 - void SetMultipartMixedCreated(TBool aFlag);
1.518 - TBool MultipartAlternativeExists() const;
1.519 - void SetMultipartAlternativeExists(TBool aFlag);
1.520 - TBool MultipartAlternativeCreated() const;
1.521 - void SetMultipartAlternativeCreated(TBool aFlag);
1.522 - TBool MultipartRelatedExists() const;
1.523 - void SetMultipartRelatedExists(TBool aFlag);
1.524 - TBool MultipartRelatedCreated() const;
1.525 - void SetMultipartRelatedCreated(TBool aFlag);
1.526 - TBool TextPartExists() const;
1.527 - void SetTextPartExists(TBool aFlag);
1.528 - TBool TextPartCreated() const;
1.529 - void SetTextPartCreated(TBool aFlag);
1.530 - TBool AttachmentEntryCreated() const;
1.531 - void SetAttachmentEntryCreated(TBool aFlag);
1.532 -
1.533 - void FindMultipartRelatedFolderL();
1.534 - void CheckForSubfolderL();
1.535 - void CreateAttachmentEntryL();
1.536 - void CopyOrigMessageToMessageL();
1.537 - void CreateMultipartMixedFolderEntryL();
1.538 - void CreateMultipartAlternativeFolderEntryL();
1.539 - void CreateMultipartRelatedFolderEntryL();
1.540 - void MoveOriginalMessageEntryChildrenToNewFolderL();
1.541 - void CreateTextEntryL();
1.542 - void StoreRichTextL();
1.543 - void CompleteStoreMessagePartL();
1.544 - void CreateHTMLEntryL();
1.545 - void PrepareToStoreHTMLEntryTextL();
1.546 - void StoreHTMLEntryTextL();
1.547 - void RemoveHTMLEntryL();
1.548 - void MoveTextEntryToAltFolderL();
1.549 - TPtrC GetDefaultAttachmentName();
1.550 - void OpenAndReadResourceFileL();
1.551 - void StoreMimeHeaderL();
1.552 - TBool CreateAttachmentMimeHeaderL(CImMimeHeader& aMimeHeader, const TDesC& aDetails);
1.553 - void CreateFolderMimeHeaderL(CImMimeHeader& aMimeHeader);
1.554 - void CreateMessageMimeHeaderL(CImMimeHeader& aMimeHeader);
1.555 - void AddAttachmentL();
1.556 - void AddAttachmentUsingFileHandleL();
1.557 - void AddLinkedAttachmentL();
1.558 - void AddEntryAsAttachmentL();
1.559 - void CreateAttachmentL();
1.560 - void DoAttachmentStoreL();
1.561 - TInt CheckMimeInAttachmentInfoL(CMsvMimeHeaders& aMsvMimeHeaders);
1.562 - CImMimeHeader* ProcessAttachmentMimeHeadersL();
1.563 - void SetEntryDetailsL(TMsvEntry& aEntry);
1.564 - void StorePlainTextL();
1.565 -private:
1.566 - enum TImStoreMessagePartState
1.567 - {
1.568 - EFindMultipartRelatedFolder,
1.569 - ECheckForSubfolder,
1.570 - ECreateAttachmentEntry,
1.571 - EStoreAttachment,
1.572 - ECopyOrigMessageToMessage,
1.573 - ECreateMultipartMixedFolderEntry,
1.574 - ECreateMultipartRelatedFolderEntry,
1.575 - ECreateMultipartAlternativeFolderEntry,
1.576 - EMoveOriginalMessageEntryChildrenToNewFolder,
1.577 - ECreateTextEntry,
1.578 - EStoreRichText,
1.579 - ERemoveHTMLEntry,
1.580 - EMoveTextToAlternativeFolder,
1.581 - ECreateHTMLEntry,
1.582 - EPrepareToStoreHTMLEntryText,
1.583 - EStoreHTMLEntryText,
1.584 - ECompleteStoreMessage,
1.585 - EFinished
1.586 - ,EStoreHTMLTextInEntry,
1.587 - EAddEntryAttachment
1.588 - };
1.589 -
1.590 - enum TImStoreMessagePartFlags
1.591 - {
1.592 - KStoreMessagePartClearFlag = 0x00000000,
1.593 - KStoreMessagePartHTMLMessage = 0x00000001,
1.594 - KStoreMessagePartMultipartMixedExists = 0x00000002,
1.595 - KStoreMessagePartMultipartMixedCreated = 0x00000004,
1.596 - KStoreMessagePartMultipartAlternativeExists = 0x00000008,
1.597 - KStoreMessagePartMultipartAlternativeCreated = 0x00000010,
1.598 - KStoreMessagePartTextPartExists = 0x00000020,
1.599 - KStoreMessagePartTextPartCreated = 0x00000040,
1.600 - KStoreMessagePartAttachmentEntryCreated = 0x00000080,
1.601 - KStoreMessagePartOrigMessageEntryChildrenCopied = 0x00000100,
1.602 - KStoreMessagePartOrigMessageEntryChildrenDeleted = 0x00000200,
1.603 - KStoreMessagePartMultipartRelatedExists = 0x00000400,
1.604 - KStoreMessagePartMultipartRelatedCreated = 0x00000800
1.605 - };
1.606 - CMsvEntry& iMsvEntry;
1.607 - CMsvOperation* iMsvOperation;
1.608 -
1.609 - CRichText* iRichTextToStore; // I don't own this object!
1.610 - CImMimeHeader* iMimeHeaderOfBodyText;
1.611 - CRichText* iRichText;
1.612 - CFileMan* iFileMan;
1.613 - CMsvEntrySelection* iMessageEntrySelection;
1.614 -
1.615 - TInt iState;
1.616 - TPckgBuf<TMsvId> iDataMember;
1.617 - TMsvId iMessageId;
1.618 - TImMessagePart iMessagePart;
1.619 - TMsvId iMixFolderId;
1.620 - TMsvId iAltFolderId;
1.621 - TMsvId iRelFolderId;
1.622 - HBufC* iAttachmentFullName;
1.623 - TInt iAttachmentSize;
1.624 - TMsvId iAttachmentId;
1.625 - TMsvId iTextId;
1.626 - TMsvId iHtmlId;
1.627 - TMsvId iRelatedPartId;
1.628 - TMsvId iAttachmentMessageId;
1.629 - TUint32 iFlags;
1.630 - HBufC8* iContentId;
1.631 - CImEmailMessage* iEmailMessage;
1.632 -
1.633 - // Used when converting rich text to html
1.634 - CParaFormatLayer* iParaLayer;
1.635 - CCharFormatLayer* iCharLayer;
1.636 - CImHtmlConverter* iHtmlConverter;
1.637 - TBool iFinishedConvertingHTML;
1.638 - CMsvAttachment* iAttachmentInfo;
1.639 - CMsvStore* iStore;
1.640 - TInt iAttachmentCreateState;
1.641 - TBool iIsAddByFileHandle;
1.642 - RFile* iFileHandle;
1.643 - RFile iFile;
1.644 - // Indicates whether to store message body as CRichText or plaintext.
1.645 - TBool iUsePlainTextStorage;
1.646 - // Size of the plain text body.
1.647 - TInt iSizeOfBody;
1.648 - // Size of the Fwd'ed/ReplyTo plaintext body part.
1.649 - TInt iSizeFwdReplyBody;
1.650 - // The error value returned when CRichText is populated with message body text.
1.651 - TInt iRestoreErr;
1.652 - enum TImAttachmentCreation
1.653 - {
1.654 - EAddAttachment,
1.655 - EAddAttachmentUsingFileHandle,
1.656 - EAddLinkedAttachment,
1.657 - EAddEntryAsAttachment,
1.658 - ECreateAttachment
1.659 - };
1.660 - };
1.661 -
1.662 -class CImEmailOperation : public CMsvOperation
1.663 -/** Provides simple email messages creation functions, including creation of new
1.664 -messages, replies, forwarded messages, and receipts.
1.665 -
1.666 -Both plain-text and HTML messages, with or without attachments, can be created.
1.667 -@publishedAll
1.668 -@released
1.669 -*/
1.670 - {
1.671 -public:
1.672 - IMPORT_C static CImEmailOperation* CreateNewL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
1.673 - IMPORT_C static CImEmailOperation* CreateNewL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority = EPriorityStandard);
1.674 -
1.675 - IMPORT_C static CImEmailOperation* CreateNewL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority , TBool aUsePlainTextStorage);
1.676 -
1.677 - IMPORT_C static CImEmailOperation* CreateReplyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TDesC& aFormatString, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
1.678 - IMPORT_C static CImEmailOperation* CreateReplyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
1.679 - IMPORT_C static CImEmailOperation* CreateReplyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority);
1.680 - IMPORT_C static CImEmailOperation* CreateReplyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);
1.681 - IMPORT_C static CImEmailOperation* CreateForwardL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TDesC& aFormatString, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
1.682 - IMPORT_C static CImEmailOperation* CreateForwardL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
1.683 - IMPORT_C static CImEmailOperation* CreateForwardL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority = EPriorityStandard);
1.684 - IMPORT_C static CImEmailOperation* CreateForwardL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);
1.685 - IMPORT_C static CImEmailOperation* CreateForwardAsAttachmentL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
1.686 - IMPORT_C static CImEmailOperation* CreateForwardAsAttachmentL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aSmtpServiceId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority = EPriorityStandard);
1.687 - IMPORT_C static CImEmailOperation* CreateReceiptL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TDesC& aFormatString, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
1.688 - IMPORT_C static CImEmailOperation* CreateReceiptL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
1.689 - IMPORT_C static CImEmailOperation* CreateReceiptL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority);
1.690 - IMPORT_C static CImEmailOperation* CreateReceiptL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);
1.691 - IMPORT_C ~CImEmailOperation();
1.692 - IMPORT_C const TDesC8& FinalProgress();
1.693 - void DoCancel();
1.694 - void RunL();
1.695 - const TDesC8& ProgressL();
1.696 -
1.697 - static CImEmailOperation* CreateCopyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
1.698 -
1.699 -private:
1.700 - enum TImEmailOperation
1.701 - {
1.702 - ENew = 0,
1.703 - EReply = 1,
1.704 - EForward = 2,
1.705 - EReceipt = 3,
1.706 - EDeletingBadEmail = 4,
1.707 - ECopy = 5,
1.708 - EAttachOriginal = 0x80,
1.709 - EForwardAsAttachment = EForward | EAttachOriginal,
1.710 - EReplyAsAttachment = EReply | EAttachOriginal
1.711 - };
1.712 -
1.713 -private:
1.714 - CImEmailOperation(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);
1.715 - void ConstructL(TMsvId aMessageId, const TDesC& aFormatString, TImEmailOperation aOperation);
1.716 - void ConstructL(TMsvId aMessageId, TImEmailOperation aOperation);
1.717 - void ConstructL(TImEmailOperation aOperation);
1.718 - void OpenAndReadResourceFileL();
1.719 - void SetSmtpServiceFromDefaultsL();
1.720 - void SetSmtpServiceFromOriginalMessageL();
1.721 - void ErrorRecovery(TInt error);
1.722 - void SelectNextStateL();
1.723 - void ProcessStateL();
1.724 - void SelectAndProcessNextStateL();
1.725 - void RequestComplete(TInt aError);
1.726 - void CreateNewHeaderL();
1.727 - void GetBodyTextL();
1.728 - TInt RemoveIncompleteAttachments();
1.729 - void CreateEntryDetails(TMsvEmailEntry& aMsvEmailEntry);
1.730 - void CreateNewMessageL(TMsvId aDestinationId);
1.731 - void CreateMultipartMixedFolderEntryL();
1.732 - void CreateTextEntryL(TMsvId aFolderId);
1.733 - void StoreBodyL();
1.734 - void StorePlainBodyL();
1.735 - void CheckForSignatureOrVCardL();
1.736 - void CreateAttachmentEntryL();
1.737 - void StoreAttachmentL();
1.738 - void CreateMultipartAlternativeFolderEntryL();
1.739 - void AppendHtmlAttachmentL();
1.740 - void AttachOriginalMessageToNewMessageL();
1.741 - void CompleteEmailOperationL();
1.742 - void CreateHTMLEntryL();
1.743 - void PrepareToStoreHTMLEntryTextL();
1.744 - void StoreHTMLEntryTextL();
1.745 - void CreateVCardAttachmentL();
1.746 - void AddVCardAttachmentL();
1.747 - void AddMessageAsAttachmentL();
1.748 - TPtrC GetDefaultAttachmentName();
1.749 - void RestoreSmtpSettingsL();
1.750 - TMsvId ServiceId();
1.751 - TBool NeedMultipartMixedFolder() const;
1.752 - void ReadDefaultHtmlAttachmentNameL(TDes& aFileName);
1.753 - void CreateDefaultAttachmentL();
1.754 - void AddMessageAttachmentInfoL(TMsvId aAttachmentMessageId);
1.755 - void ResetStoreL();
1.756 - void CreateAddressListStringL(HBufC*& aListBuffer, const CDesCArray& aAddressArray);
1.757 - void RestoreOriginalHeaderL();
1.758 - void SetBodyHeaderFormatL();
1.759 - static void ClosePlainBodyTextArray(TAny* aPtr);
1.760 - void StorePlainTextL();
1.761 - TInt GetPlainBodyTextSizeL();
1.762 -
1.763 -private:
1.764 - enum TImEmailOperationState
1.765 - {
1.766 - ECreateNewHeader,
1.767 - EGetBodyText,
1.768 - EGetAttachmentList,
1.769 - EGetMessageDigest,
1.770 - ECreateNewMessageEntry,
1.771 - ECheckMultipartMixedFolderRequired,
1.772 - ECreateMultipartMixedFolderEntry,
1.773 - ECheckMultipartAlternativeFolderRequired,
1.774 - ECreateMultipartAlternativeFolderEntry,
1.775 - ECheckTextEntryRequired,
1.776 - ECreateTextEntry,
1.777 - EStoreBody,
1.778 - ECheckVCardRequired,
1.779 - ECreateVCardAttachment,
1.780 - EAddVCardAttachment,
1.781 - ECheckHTMLEntryRequired,
1.782 - ECreateHTMLEntry,
1.783 - EPrepareToStoreHTMLEntryText,
1.784 - EStoreHTMLEntryText,
1.785 - ECheckAttachOriginalMessageRequired,
1.786 - EAttachOriginalMessage,
1.787 - ECheckHTMLPageRequired,
1.788 - EFindHTMLPage,
1.789 - ECopyHTMLPartToAttachment,
1.790 - ECheckAttachmentsRequired,
1.791 - ECreateAttachmentEntry,
1.792 - EStoreAttachment,
1.793 - ECheckEmbeddedMessagesRequired,
1.794 - EAddEmbeddedMessagesAsAttachments,
1.795 - ECompleteEmailOperation,
1.796 - EFinished
1.797 - ,ECreateDefaultHtmlAttachment,
1.798 - EStoreHTMLTextInEntry,
1.799 - EAddMessageAttachmentInfo
1.800 - };
1.801 -
1.802 - // Flags specifying format of body header information to include
1.803 - // in reply and forwarded email addresses
1.804 - enum TImBodyHeaderFormat
1.805 - {
1.806 - ENoToCcInfo=0,
1.807 - EToOnly,
1.808 - ECcOnly,
1.809 - EToAndCc
1.810 - };
1.811 -
1.812 - CMsvEntry* iMsvEntry;
1.813 - CMsvOperation* iMsvOperation;
1.814 -
1.815 - CImHeader* iNewHeader;
1.816 - CParaFormatLayer* iParaLayer;
1.817 - CCharFormatLayer* iCharLayer;
1.818 - CRichText* iRichText;
1.819 - CImEmailMessage* iEmailMessage;
1.820 - HBufC* iFormatString;
1.821 - CFileMan* iFileMan;
1.822 - CImSmtpSettings* iSmtpSettings;
1.823 - TInt iState;
1.824 - TImEmailOperation iOperation;
1.825 - TMsvId iDestinationId;
1.826 - TMsvId iMultipartMixedId;
1.827 - TMsvId iMultipartAlternativeId;
1.828 - TMsvId iOrigMessageId;
1.829 - TMsvId iNewMessageId;
1.830 - TMsvId iSmtpServiceId;
1.831 - TMsvId iAttachedMessageId;
1.832 - TUid iMsgType;
1.833 - TMsvPartList iPartList;
1.834 - TMsvEmailTypeList iMsvEmailTypeList;
1.835 - TInt iAttachmentCount;
1.836 - TInt iTotalAttachments;
1.837 - TPckgBuf<TMsvId> iDataMember;
1.838 - HBufC* iBodyHeaderFormatString;
1.839 - HBufC* iBodyHeaderDateTimeFormatString;
1.840 - HBufC* iBodyHeaderToString;
1.841 - HBufC* iBodyHeaderCcString;
1.842 - HBufC* iBodyHeader;
1.843 - HBufC* iUserEmailAddress;
1.844 - TInt iRichTextSize;
1.845 - TInt iVCardAndHtmlSize;
1.846 - TBool iOrigMessageHtml;
1.847 - TBool iHtmlNoTextAlt;
1.848 - TInt iEmbeddedMessagesToProcess;
1.849 - TImMessageField iMessageField;
1.850 -
1.851 - // for MIME messages:
1.852 - TBool iCreateHtmlMessage;
1.853 - TBool iMultipartMixedFolderCreated;
1.854 - TBool iMultipartAlternativeFolderCreated;
1.855 - TMsvId iTextId;
1.856 - TMsvId iHtmlId;
1.857 - TMsvId iVcardId;
1.858 -
1.859 - // Used when converting rich text to html
1.860 - CImHtmlConverter* iHtmlConverter;
1.861 - TBool iFinishedConvertingHTML;
1.862 -
1.863 - // Relating to adding Signature and/or Vcard to an email
1.864 - TBool iNeedToAddVCardAttachment;
1.865 - HBufC* iDefaultVCardNameFormatString;
1.866 - TStreamId iVcardStoreId;
1.867 - CStreamStore* iVcardStore;
1.868 - CRichText* iSignatureText;
1.869 - TFileName iFileName;
1.870 - TImAttachmentFile iAttachmentFile;
1.871 -
1.872 - // PCMail
1.873 - TMsvId iPCMailServiceId;
1.874 - RPointerArray<CMsvAttachment> iAttachmentInfoList;
1.875 - // set this anytime during the object life cycle attachment manager was used
1.876 - TBool iAttachmentMgrUsed;
1.877 - CMsvStore* iStore;
1.878 - RFile iFile;
1.879 -
1.880 - TImBodyHeaderFormat iBodyHeaderFormat;
1.881 - CImHeader* iOriginalHeader;
1.882 - /** Indicates if the body text entry is plain text */
1.883 - TBool iUsePlainTextStorage;
1.884 - // The error value returned when CRichText is populated with message body text.
1.885 - TInt iRestoreErr;
1.886 - };
1.887 -
1.888 -
1.889 -class CImHtmlConverter : public CBase
1.890 -/**
1.891 -@internalComponent
1.892 -@released
1.893 -*/
1.894 - {
1.895 -public:
1.896 - static CImHtmlConverter* CImHtmlConverter::NewL(CMsvEntry& aMsvEntry,
1.897 - CParaFormatLayer& aParaLayer, CCharFormatLayer& aCharLayer);
1.898 - ~CImHtmlConverter();
1.899 - void PrepareToStoreHTMLEntryTextL(TMsvId& aHtmlId, const TMsvId aTextId);
1.900 - void ResetStoreL();
1.901 - void ResetStoreWithoutCommit();
1.902 - TBool StoreHTMLEntryTextAL(TRequestStatus& aStatus);
1.903 - CMsvOperation* ChangeHTMLTextInEnrtyL(TRequestStatus& aStatus);
1.904 -
1.905 - void ReadDefaultAttachmentNameL( RResourceFile& resourceFile);
1.906 - TInt Size() const;
1.907 -
1.908 -private:
1.909 - CImHtmlConverter(CMsvEntry& aMsvEntry, CParaFormatLayer& aParaLayer, CCharFormatLayer& aCharLayer);
1.910 - TFileName HtmlFilename(CMsvEntry& aEntry, TPtrC aFileName);
1.911 - TPtrC GetDefaultAttachmentName();
1.912 - void ConstructL();
1.913 -
1.914 -private:
1.915 - CMsvEntry& iMsvEntry;
1.916 - CParaFormatLayer& iParaLayer;
1.917 - CCharFormatLayer& iCharLayer;
1.918 -
1.919 - CConverterBase* iToHTMLConverter;
1.920 - CCnaConverterList* iConverterList;
1.921 -
1.922 - TMsvId iTextId;
1.923 - TMsvId iHtmlId;
1.924 - TInt iSize;
1.925 - HBufC* iDefaultAttachmentName;
1.926 - CRichText* iRichText;
1.927 - RDesReadStream iSourceStream;
1.928 - RFileWriteStream iTargetStream;
1.929 - CMsvStore* iStore;
1.930 - RFile iFile;
1.931 - };
1.932 -
1.933 -class CImStoreResolver : public CBase, public MRichTextStoreResolver
1.934 -/**
1.935 -@internalComponent
1.936 -@released
1.937 -*/
1.938 - {
1.939 -public:
1.940 - CImStoreResolver(CStreamStore* aStore);
1.941 - ~CImStoreResolver();
1.942 - //
1.943 -private:
1.944 - const CStreamStore& StreamStoreL(TInt aPos)const;
1.945 - //
1.946 -private:
1.947 - CStreamStore* iStore;
1.948 - };
1.949 -
1.950 -
1.951 -
1.952 -
1.953 -#endif // __MIUTMSG_H__