common/tools/ats/smoketest/email/email/smtp/src/ImCltCvRecv.cpp
author Maciej Seroka <maciejs@symbian.org>
Fri, 30 Oct 2009 09:36:23 +0000
changeset 719 d5603c08781b
child 872 17498133d9ad
permissions -rw-r--r--
Added smoketest for email
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
719
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     1
// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     2
// All rights reserved.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     3
// This component and the accompanying materials are made available
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     4
// under the terms of the License "Symbian Foundation License v1.0"
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     5
// which accompanies this distribution, and is available
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     6
// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     7
//
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     8
// Initial Contributors:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    10
//
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    11
// Contributors:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    12
//
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    13
// Description:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    14
//
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    15
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    16
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    17
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    18
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    19
 @file
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    20
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    21
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    22
#include <imcm.rsg>
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    23
#include <barsread.h>
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    24
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    25
#include <imcvcodc.h>
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    26
#include <imcvutil.h>
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    27
#include <cmsvbodytext.h>
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    28
#include "ImCltCvRecv.h"
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    29
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    30
#ifdef __WINS__
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    31
#include <e32wins.h> 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    32
#include <msvapi.h>
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    33
#endif
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    34
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    35
#ifndef __WINS__
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    36
#include <msvapi.h>
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    37
#endif
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    38
#include <cmsvattachment.h> 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    39
#include <mmsvattachmentmanager.h>
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    40
#include <mmsvattachmentmanagersync.h>
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    41
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    42
#ifndef _MSG_NO_LOGGING
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    43
#define __IMUT_LOGGING
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    44
_LIT(KLogFilePath, "c:\\logs\\mailtext\\in.txt");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    45
_LIT8(KNewLogHeader, "\r\n------ New Receive Session ------\r\n");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    46
_LIT8(KFound, "found: ");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    47
_LIT8(KPartLine, "unknown or part line");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    48
_LIT8(KEndOFHeader, "End of header");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    49
_LIT8(KSkippingData, "Skipping data");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    50
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    51
_LIT8(KFoundMIMEBoundary, "MIME boundary");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    52
_LIT8(KRemoveBoundary, "Remove boundary");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    53
_LIT8(KRemovedBoundary, "Removed boundary");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    54
_LIT8(KSectionHeader, "Section header");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    55
_LIT8(KWritingToFile, "writing attachment");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    56
_LIT8(KWroteToFile, "wrote attachment");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    57
_LIT8(KFailedToWriteToFile, "Failed to write to attachment file");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    58
_LIT8(KFoundUUEStartBoundary, "UUE start boundary");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    59
_LIT8(KFoundUUEEndBoundary, "UUE end boundary");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    60
_LIT8(KReset, "Resetting CImRecvConvert");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    61
_LIT8(KReseted, "Resetting CImRecvConvert");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    62
_LIT8(KLastToken, "That was the last token");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    63
_LIT8(KResetForNewEntry, "Reset for a New Entry");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    64
_LIT8(KResetedForNewEntry, "Reseted for a New Entry");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    65
_LIT8(KCreatingEntry, "Creating Entry");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    66
_LIT8(KCreatedEntry, "Created Entry");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    67
_LIT8(KUpdatingEntry, "Updating Entry");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    68
_LIT8(KUpdatedEntry, "Updated Entry");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    69
_LIT8(KMoveToParentEntry, "Moved to parent entry");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    70
_LIT8(KMovedToParentEntry, "End of Moved to parent entry");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    71
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    72
_LIT8(KIgnoringStreams, "Discarding streams");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    73
_LIT8(KStartMessageComplete, "Start Message Complete");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    74
_LIT8(KMessageComplete, "Message Complete");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    75
_LIT8(KHeaderComplete, "Message Header complete");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    76
_LIT8(KReturnReceiptTo, "return-receipt-To is set");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    77
_LIT8(KStartStoringEntryStream, "Starting Storing Entry Stream");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    78
_LIT8(KStoringEntryStream, "Storing Entry Stream");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    79
_LIT8(KDoneStoringEntryStream, "Done Storing Entry Stream");
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    80
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    81
#endif // _MSG_NO_LOGGING
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    82
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    83
// uncomment the line below if logging is to be enabled
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    84
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    85
#if defined(__IMUT_LOGGING)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    86
#define RECVLOG(text) (iImcvLog?iImcvLog->AppendComment(text):void(0));
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    87
#define RECVLOG_OUT(text) (iImcvLog?iImcvLog->AppendOut(text):void(0));
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    88
#define LOGGING(string1, string2) (Logging(string1, string2));
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    89
#else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    90
#define RECVLOG(text) (void(0));
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    91
#define RECVLOG_OUT(text) (void(0));
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    92
#define LOGGING(string1, string2) (void(0));
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    93
#endif
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    94
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    95
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    96
const TInt KBodyTextChunkSizeBytes = 512;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    97
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    98
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    99
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   100
NewLC()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   101
Static factory constructor. Uses two phase construction 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   102
and pushes the newly created object into the Cleanup stack.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   103
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   104
@param anFs
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   105
@param aClientEntry
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   106
@param aMsgType
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   107
@param aEmailServiceId
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   108
@return
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   109
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   110
 CImCltRecvConvert* CImCltRecvConvert::NewLC(RFs& anFs,CMsvEntry* aClientEntry,TUid aMsgType,TMsvId aEmailServiceId)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   111
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   112
	CImCltRecvConvert* self = new (ELeave) CImCltRecvConvert(anFs,aClientEntry,aMsgType,aEmailServiceId);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   113
	CleanupStack::PushL(self);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   114
	self->ConstructL(anFs);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   115
	return self;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   116
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   117
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   118
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   119
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   120
NewL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   121
Static factory constructor. Uses two phase construction.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   122
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   123
@param anFs
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   124
@param aClientEntry
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   125
@param aMsgType
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   126
@param aEmailServiceId
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   127
@return
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   128
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   129
 CImCltRecvConvert* CImCltRecvConvert::NewL(RFs& anFs,CMsvEntry* aClientEntry,TUid aMsgType,TMsvId aEmailServiceId)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   130
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   131
	CImCltRecvConvert* self = CImCltRecvConvert::NewLC(anFs,aClientEntry,aMsgType,aEmailServiceId);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   132
	CleanupStack::Pop();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   133
	return self;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   134
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   135
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   136
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   137
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   138
ConstructL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   139
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   140
@param anFs
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   141
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   142
void CImCltRecvConvert::ConstructL(RFs& anFs)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   143
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   144
	iFsSession = &anFs;  
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   145
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   146
	RResourceFile resFile;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   147
	OpenResourceFileL(resFile, anFs);	// NB leaves if file not found
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   148
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   149
	// make sure the resource file will be closed if anything goes wrong
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   150
	// CloseResourceFile is declared in IMUTDLL.H and defined in IMUTDLL.CPP
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   151
	TCleanupItem close( CloseResourceFile, &resFile );
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   152
	CleanupStack::PushL( close );
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   153
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   154
	// Read iStore8BitData flag.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   155
	HBufC8* buf = resFile.AllocReadLC(STORE_8BIT_BODY_TEXT);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   156
	TResourceReader reader;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   157
	reader.SetBuffer(buf);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   158
	iStore8BitData = reader.ReadInt8();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   159
	CleanupStack::PopAndDestroy(buf);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   160
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   161
	buf = resFile.AllocReadLC(REMOVED_ATTACHMENT_TAG);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   162
	reader.SetBuffer(buf);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   163
	iRemovedAttachmentTag = reader.ReadTPtrC().AllocL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   164
	CleanupStack::PopAndDestroy(buf);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   165
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   166
	buf = resFile.AllocReadLC(DEFAULT_ATTACHMENT_NAME);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   167
	reader.SetBuffer(buf);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   168
	iDefaultAttachmentName = reader.ReadTPtrC().AllocL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   169
	CleanupStack::PopAndDestroy(buf);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   170
	buf = resFile.AllocReadLC(PARTIAL_DOWNLOAD_FOOTER_MESSAGE);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   171
	reader.SetBuffer(buf);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   172
	iPartialEmailFooter = (reader.ReadTPtrC()).AllocL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   173
	CleanupStack::PopAndDestroy(buf);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   174
	buf = NULL;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   175
	CleanupStack::PopAndDestroy(&resFile);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   176
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   177
	// create CImHeader object to store Rfc822 header info...
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   178
	iOutputHeader = CImHeader::NewLC();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   179
	CleanupStack::Pop();			   
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   180
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   181
	if (iStore8BitData)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   182
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   183
		//Create body text storage helper.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   184
		iBodyText = CMsvBodyText::NewL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   185
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   186
	else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   187
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   188
		// create CRichText object to store body...
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   189
		iParaLayer = CParaFormatLayer::NewL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   190
		iCharLayer = CCharFormatLayer::NewL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   191
		iOutputBody = CRichText::NewL(iParaLayer, iCharLayer);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   192
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   193
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   194
	// Create Rfc822 filter object...
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   195
	iRfc822Token = CLocalRfc822Token::NewLC();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   196
	CleanupStack::Pop();				 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   197
	iRfc822Token->SetImRecvConvert(this);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   198
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   199
	// Create converter objects...
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   200
	iCharacterConverter = CCnvCharacterSetConverter::NewL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   201
	iCharConv = CImConvertCharconv::NewL(*iCharacterConverter, anFs);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   202
	iHeaderConverter = CImConvertHeader::NewL(*iCharConv); 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   203
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   204
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   205
	// Create MIME filter object...
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   206
	iMimeParser = CLocalMimeParser::NewL(*this);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   207
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   208
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   209
	// logfile stuff
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   210
	iImcvLog=NULL;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   211
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   212
#ifdef __IMUT_LOGGING	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   213
	TRAP_IGNORE(iImcvLog=CImLog::NewL(KLogFilePath, EAppend));
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   214
#endif
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   215
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   216
	iRootEntryId = EntryId();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   217
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   218
	iNotFinishedRfc822Header = ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   219
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   220
	iEmailEntry = new (ELeave) TMsvEmailEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   221
	iReceivingHeadersOnly=EFalse;	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   222
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   223
	iParent = new (ELeave) CArrayFixFlat<TParentDetails>(3);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   224
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   225
	iFirstBoundaryReached=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   226
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   227
	ResetL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   228
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   229
	RECVLOG( KNewLogHeader )
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   230
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   231
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   232
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   233
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   234
CImCltRecvConvert()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   235
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   236
@param anFs
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   237
@param aClientEntry
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   238
@param aMsgType
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   239
@param aEmailServiceId
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   240
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   241
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   242
CImCltRecvConvert::CImCltRecvConvert(RFs& anFs,CMsvEntry* aClientEntry,TUid aMsgType,TMsvId aEmailServiceId)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   243
	: CLocalImRecvConvert(anFs,iNullServerEntry,aMsgType,aEmailServiceId),
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   244
	  iClientEntry(aClientEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   245
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   246
	__DECLARE_NAME(_S("CImCltRecvConvert"));
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   247
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   248
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   249
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   250
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   251
~CImCltRecvConvert()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   252
Destructor
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   253
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   254
CImCltRecvConvert::~CImCltRecvConvert()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   255
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   256
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   257
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   258
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   259
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   260
ResetForHeadersL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   261
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   262
 void CImCltRecvConvert::ResetForHeadersL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   263
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   264
	// This function is used in preference to ResetL() when the owner
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   265
	// only wishes to create  email entries in the remote mailbox - 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   266
	// they do not wish to create any stores associated with the message
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   267
	// entry
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   268
	ResetL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   269
	iReceivingHeadersOnly = ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   270
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   271
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   272
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   273
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   274
ResetL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   275
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   276
 void CImCltRecvConvert::ResetL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   277
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   278
	RECVLOG(KReset) 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   279
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   280
	iBodyId=KMsvNullIndexEntryId;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   281
	iSizeOfAttachmentsRemoved=0;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   282
	iClientEntry->SetEntryL(iRootEntryId);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   283
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   284
	iReceivingHeadersOnly=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   285
	iMessageEntryCalled=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   286
	iLeaveError=KErrNone; 		
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   287
	iCurrentMultipartFolderEntryId=0;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   288
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   289
	TParentDetails parent;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   290
	parent.iAttachment=parent.iMHTML=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   291
	parent.iSize=0;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   292
	iParent->InsertL(0,parent);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   293
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   294
	if(iEmailEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   295
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   296
		delete iEmailEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   297
		iEmailEntry=NULL;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   298
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   299
	iEmailEntry = new (ELeave) TMsvEmailEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   300
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   301
	// "iSavingAttachments" commands this code to store attachments in files.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   302
	// Currently this is always set to ETrue as we intend to save all attachments
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   303
	// However, if the user wishes to discard (ie do not save) any 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   304
	// attachments in incoming email messages - then this member variable
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   305
	// may be set to EFalse by the inline accessor function "SaveAllAttachments(TBool)"
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   306
	iSavingAttachments=ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   307
	iAttachmentFileState=EFileIsClosed;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   308
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   309
	// iLeaveError contains the error value of any functions that leaves (ie CRichText::InsertL)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   310
	// or any returned error value that generates a leave from within CImRecvConvert (ie RFile::Create)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   311
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   312
	iGlobalIndent=0;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   313
	iLongestLine=50;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   314
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   315
	iImPriority=EMsvMediumPriority;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   316
	if(NULL!=iImcvUtils)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   317
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   318
		delete iImcvUtils;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   319
		iImcvUtils=NULL;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   320
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   321
	iImcvUtils=CImcvUtils::NewL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   322
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   323
	// reset internal date
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   324
	iTimeDate.HomeTime();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   325
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   326
	iMimeParser->Reset();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   327
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   328
	iNewEntry=EFalse; //EFalse if the entry was moved to. ETrue if the entry was just created
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   329
	iTopMessagePart=KMsvRootIndexEntryId;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   330
	ResetForNewEntryL(iDefaultEntryType);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   331
	iMIMEPart_822Header = EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   332
	iPartialEmail=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   333
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   334
	RECVLOG(KReseted) 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   335
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   336
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   337
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   338
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   339
ParseNextFieldL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   340
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   341
@param aSourceLine
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   342
@return
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   343
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   344
 TInt CImCltRecvConvert::ParseNextFieldL(const TDesC8& aSourceLine) 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   345
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   346
	__ASSERT_DEBUG(iRootEntryId!=KMsvRootIndexEntryId, gPanic(KPanicServiceIdNotValid));
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   347
	RECVLOG_OUT(aSourceLine);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   348
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   349
	if ((iLeaveError == KErrNone) && (iClientEntry->Entry().Id() == KMsvRootIndexEntryId))
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   350
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   351
		iClientEntry->SetEntryL(iSavedEntryId);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   352
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   353
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   354
	if(iLeaveError==KErrNone)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   355
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   356
		TRAP(iLeaveError, ParseNextLineL(aSourceLine));		
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   357
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   358
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   359
	if (iLeaveError==KErrNone)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   360
		iSavedEntryId = iClientEntry->Entry().Id();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   361
	TUid type = iClientEntry->Entry().iType;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   362
	if( type != KUidMsvMessageEntry    &&
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   363
		type != KUidMsvEmailTextEntry  &&
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   364
		type != KUidMsvEmailHtmlEntry  &&
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   365
		type != KUidMsvAttachmentEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   366
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   367
		iClientEntry->SetEntryL(KMsvRootIndexEntryId);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   368
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   369
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   370
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   371
	return iLeaveError;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   372
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   373
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   374
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   375
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   376
ParseNextLineL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   377
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   378
@param aSourceLine
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   379
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   380
void CImCltRecvConvert::ParseNextLineL(const TDesC8& aSourceLine)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   381
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   382
	iParsedMimeBoundaryLast=0;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   383
	if(!iFinishedHeader)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   384
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   385
		// start by getting the next token from the header
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   386
		iRfc822Token->ParseNextLineL(aSourceLine);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   387
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   388
		switch(iRfc822Token->iHeaderPart)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   389
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   390
			case CLocalRfc822Token::EUnknown:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   391
			case CLocalRfc822Token::ENotFinished:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   392
				RECVLOG(KPartLine)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   393
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   394
			case CLocalRfc822Token::EFrom:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   395
				iOutputHeader->SetFromL(*iRfc822Token->OutputLine());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   396
				LOGGING(KFound,KImcvFromPrompt);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   397
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   398
			case CLocalRfc822Token::EReplyTo:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   399
				iOutputHeader->SetReplyToL(*iRfc822Token->OutputLine());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   400
				LOGGING(KFound,KImcvReplyToPrompt);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   401
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   402
			case CLocalRfc822Token::ETo:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   403
				ParseRecipientListL(iOutputHeader->ToRecipients());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   404
				LOGGING(KFound,KImcvToPrompt);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   405
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   406
			case CLocalRfc822Token::ECc: 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   407
				ParseRecipientListL(iOutputHeader->CcRecipients());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   408
				LOGGING(KFound,KImcvCcPrompt);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   409
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   410
			case CLocalRfc822Token::EBcc: 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   411
				ParseRecipientListL(iOutputHeader->BccRecipients());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   412
				LOGGING(KFound,KImcvBccPrompt);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   413
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   414
			case CLocalRfc822Token::ESubject:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   415
				iOutputHeader->SetSubjectL(*iRfc822Token->OutputLine());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   416
				LOGGING(KFound,KImcvSubjectPrompt);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   417
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   418
			case CLocalRfc822Token::EDate:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   419
				iRfc822Date.ParseDateField(*iRfc822Token->OutputLine() , iTimeDate); 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   420
				if (iEmailEntry->Id() != iTopMessagePart)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   421
					{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   422
					iEmailEntry->iDate = iTimeDate;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   423
					}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   424
				LOGGING(KFound,KImcvDatePrompt);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   425
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   426
			case CLocalRfc822Token::EMessageId:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   427
				iOutputHeader->SetImMsgIdL(*iRfc822Token->OutputLine());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   428
				LOGGING(KFound,KImcvMessageIdPrompt);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   429
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   430
			case CLocalRfc822Token::EPriority:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   431
				iImPriority=iImcvUtils->EvaluatePriorityText(*iRfc822Token->OutputLine());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   432
				LOGGING(KFound,KImcvPriorityPrompt);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   433
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   434
			case CLocalRfc822Token::EReturnReceiptTo:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   435
				iOutputHeader->SetReceiptAddressL(*iRfc822Token->OutputLine());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   436
				LOGGING(KFound,KReturnReceiptTo);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   437
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   438
			case CLocalRfc822Token::EEndOfHeader:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   439
				// the next line goes in the body part
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   440
				iFinishedHeader = ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   441
				RECVLOG(KEndOFHeader)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   442
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   443
			default:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   444
				RECVLOG(KEndOFHeader)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   445
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   446
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   447
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   448
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   449
		if(iRfc822Token->iHeaderPart != CLocalRfc822Token::ENotFinished)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   450
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   451
			// Now that we've used the data, we also need to clear the output line from the tokeniser....
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   452
			iRfc822Token->OutputLine()->Des() = KNullDesC8;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   453
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   454
			// whatever part we just read, we may also have read the empty line that separates
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   455
			// the header from the body
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   456
			if((iFinishedHeader = iRfc822Token->LastToken()) != EFalse)	//iFinishedHeader set to 1 on CRLF-
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   457
				{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   458
				RECVLOG(KLastToken);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   459
				iNotFinishedRfc822Header = EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   460
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   461
				iHeaderConverter->SetMessageType(iMimeParser->MessageIsMime());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   462
				iHeaderConverter->DecodeAllHeaderFieldsL(*iOutputHeader);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   463
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   464
				if (iMimeParser->MessageIsMime())
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   465
					{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   466
					EndOfHeaderMIMEProcessingL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   467
					}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   468
				else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   469
					{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   470
					EndOfHeaderProcessingL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   471
					}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   472
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   473
				if (iStore8BitData)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   474
					{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   475
					iBodyText->SetDefaultCharacterSet(iCharConv->SystemDefaultCharset());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   476
					if ( iMimeParser->MessageIsMime() && iMimeParser->ContentType()==EMimeText )
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   477
						{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   478
						iBodyText->SetCharacterSet(iMimeParser->CurrentCharsetL());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   479
						}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   480
					else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   481
						{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   482
						iBodyText->SetCharacterSet(0);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   483
						}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   484
					}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   485
				else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   486
					{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   487
					// Get charset for decoding.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   488
					if ( iMimeParser->MessageIsMime() && iMimeParser->ContentType()==EMimeText )
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   489
						{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   490
						iCharConv->PrepareToConvertToFromOurCharsetL(iMimeParser->CurrentCharsetL());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   491
						}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   492
					else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   493
						{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   494
						iCharConv->PrepareToConvertToFromOurCharsetL(iCharConv->SystemDefaultCharset());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   495
						}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   496
					}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   497
				}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   498
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   499
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   500
	else if (iReceivingHeadersOnly==EFalse)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   501
		{	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   502
		//Set to EFalse when a single line is to be skipped (ie boundary line)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   503
		iCommitLine=ETrue; 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   504
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   505
		// read one line of the message body if I am processing a whole email message
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   506
		if(iMimeParser->MessageIsMime())
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   507
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   508
			ParseMimeLineL(aSourceLine);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   509
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   510
		else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   511
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   512
			ParseBodyLineL(aSourceLine);	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   513
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   514
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   515
		if((iCommitLine)&&(!iSkipData))
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   516
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   517
			DecodeAndStoreLineL(aSourceLine);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   518
			}	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   519
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   520
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   521
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   522
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   523
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   524
MessageEntryDetailsL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   525
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   526
@return
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   527
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   528
 TMsvEmailEntry CImCltRecvConvert::MessageEntryDetailsL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   529
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   530
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   531
	iMessageEntryCalled=ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   532
	CloseAttachmentFileL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   533
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   534
	// A message requiring manual termination and not part way through a MIME part header
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   535
	if( iTopMessagePart==EntryId() && iFinishedHeader) 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   536
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   537
		StoreEntryStreamsL(KStore822Header|KStoreMIMEHeader);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   538
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   539
	else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   540
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   541
		iClientEntry->SetEntryL(iTopMessagePart);         
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   542
		if(iEmailEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   543
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   544
			delete iEmailEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   545
			iEmailEntry=NULL;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   546
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   547
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   548
		iEmailEntry = new (ELeave) TMsvEmailEntry(iClientEntry->Entry());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   549
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   550
		
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   551
	return *iEmailEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   552
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   553
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   554
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   555
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   556
MessageCompleteL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   557
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   558
@param aEmailEntry
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   559
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   560
 void CImCltRecvConvert::MessageCompleteL(TMsvEmailEntry aEmailEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   561
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   562
	if (iClientEntry->Entry().Id() == KMsvRootIndexEntryId)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   563
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   564
		iClientEntry->SetEntryL(iSavedEntryId);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   565
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   566
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   567
	__ASSERT_DEBUG(iMessageEntryCalled, gPanic(KPanicMessageEntryNotCalled));
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   568
	__ASSERT_DEBUG(aEmailEntry.Id()==iTopMessagePart, gPanic(KPanicMessageEntryIdHasChanged));
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   569
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   570
	// Called ResetL() to reset object instead of ResetForHeadersL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   571
	__ASSERT_DEBUG(iReceivingHeadersOnly, gPanic(KPanicIncorrectResetState)); 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   572
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   573
	if(iEmailEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   574
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   575
		if (iEmailEntry->Id())
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   576
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   577
			if(iLeaveError==KErrNone)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   578
				{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   579
				// a remote email header cannot have any attachments or be marked as complete...
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   580
				aEmailEntry.SetAttachment(EFalse);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   581
				aEmailEntry.SetMHTMLEmail(EFalse);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   582
				aEmailEntry.SetComplete(EFalse);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   583
				iClientEntry->SetEntryL(aEmailEntry.Id());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   584
				RECVLOG(KHeaderComplete)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   585
				}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   586
			else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   587
				{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   588
				if (!iPopulateMessage)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   589
					{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   590
					TMsvId currentId = EntryId();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   591
					iClientEntry->SetEntryL(iClientEntry->Entry().Parent());			
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   592
					iClientEntry->DeleteL(currentId);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   593
					}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   594
				User::Leave(iLeaveError);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   595
				}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   596
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   597
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   598
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   599
	iSavedEntryId = iClientEntry->Entry().Id();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   600
	iClientEntry->SetEntryL(KMsvRootIndexEntryId);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   601
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   602
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   603
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   604
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   605
MessageCompleteL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   606
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   607
@return
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   608
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   609
 TMsvId CImCltRecvConvert::MessageCompleteL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   610
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   611
	RECVLOG(KStartMessageComplete)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   612
	if (iClientEntry->Entry().Id() == KMsvRootIndexEntryId)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   613
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   614
		iClientEntry->SetEntryL(iSavedEntryId);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   615
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   616
	if (iParsedMimeBoundaryLast==EFalse && iAttachmentFileState==EFileIsOpen && iPartialEmail!=EFalse)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   617
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   618
		iAttachmentFileState=EFileTopIncomplete;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   619
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   620
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   621
	CloseAttachmentFileL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   622
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   623
	if(!iEmailEntry->Id())
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   624
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   625
		return 0;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   626
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   627
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   628
	if(iLeaveError!=KErrNone)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   629
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   630
		User::Leave(iLeaveError);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   631
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   632
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   633
	if (EntryId()!=iTopMessagePart)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   634
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   635
		iEmailEntry->SetComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   636
		StoreEntryStreamsL(KStoreBodyText);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   637
		MoveToParentEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   638
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   639
		if( iTopMessagePart==EntryId() && iFinishedHeader) 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   640
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   641
			iEmailEntry->SetVisible(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   642
			iEmailEntry->SetInPreparation(EFalse);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   643
			iEmailEntry->SetBodyTextComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   644
			iEmailEntry->SetComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   645
			iEmailEntry->SetSendingState(KMsvSendStateWaiting);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   646
			// Main message.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   647
			StoreMessageEntryDetailsL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   648
			return iEmailEntry->Id();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   649
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   650
		else if(iEmailEntry->iType == KUidMsvMessageEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   651
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   652
			StoreMessageEntryDetailsL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   653
			MoveToParentEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   654
			StoreMessageEntryDetailsL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   655
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   656
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   657
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   658
	iClientEntry->SetEntryL(iTopMessagePart);         
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   659
	if(NULL!=iEmailEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   660
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   661
		delete iEmailEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   662
		iEmailEntry=NULL;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   663
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   664
	iEmailEntry = new (ELeave) TMsvEmailEntry(iClientEntry->Entry());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   665
	iEmailEntry->SetVisible(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   666
	iEmailEntry->SetInPreparation(EFalse);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   667
	iEmailEntry->SetComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   668
	iEmailEntry->SetBodyTextComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   669
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   670
	iEmailEntry->SetSendingState(KMsvSendStateWaiting);	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   671
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   672
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   673
	iEmailEntry->SetAttachment(iParent->At(0).iAttachment);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   674
	iEmailEntry->SetMHTMLEmail(iParent->At(0).iMHTML);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   675
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   676
	if(iEmailEntry->MHTMLEmail() == EFalse && iEmailEntry->Attachment() == EFalse && iRelatedAttachments !=EFalse)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   677
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   678
		iEmailEntry->SetAttachment(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   679
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   680
	iRelatedAttachments=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   681
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   682
	iEmailEntry->iSize=iParent->At(0).iSize;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   683
	iEmailEntry->SetMessageFolderType(iParent->At(0).iFolder);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   684
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   685
	iClientEntry->ChangeL(*iEmailEntry);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   686
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   687
	iSavedEntryId = iClientEntry->Entry().Id();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   688
	iClientEntry->SetEntryL(KMsvRootIndexEntryId);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   689
	RECVLOG(KMessageComplete)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   690
	return iEmailEntry->Id();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   691
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   692
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   693
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   694
 /**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   695
ParseMimeLineL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   696
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   697
@param aSourceLine
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   698
*/ 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   699
void CImCltRecvConvert::ParseMimeLineL(const TDesC8& aSourceLine)  
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   700
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   701
	iTopPartialDownloadCounter+=aSourceLine.Length(); // increment the number of bytes of the attachment downloaded so far
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   702
	if(!iMimeParser->IsBoundary(aSourceLine))
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   703
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   704
		if(!iPrepared) // first line of the body
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   705
			{		
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   706
			if (iMIMEPart_822Header)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   707
				{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   708
				// missing 822 part header. Revert to default.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   709
				EndOfHeaderMIMEProcessingL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   710
				iMIMEPart_822Header=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   711
				}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   712
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   713
			PrepareDecoder();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   714
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   715
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   716
		if (CheckUUEStartL(aSourceLine))
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   717
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   718
			iAlgorithm=EUUDecode;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   719
			iCommitLine=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   720
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   721
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   722
	else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   723
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   724
		iParsedMimeBoundaryLast=ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   725
		// found a MIME boundary so store the current parts data and update its entry.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   726
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   727
		RECVLOG(KFoundMIMEBoundary)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   728
		iCommitLine=EFalse; //Dont store this line as its a boundary.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   729
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   730
		if(!iFirstBoundaryReached && iEntryType==EFolderEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   731
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   732
			iFirstBoundaryReached=ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   733
			if (!iCurrentMultipartFolderEntryId)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   734
				iCurrentMultipartFolderEntryId = EntryId();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   735
			MoveToParentEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   736
			ResetForNewEntryL(iDefaultEntryType);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   737
			return; // First boundary encountered.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   738
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   739
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   740
		CloseAttachmentFileL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   741
		if(iNewEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   742
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   743
			iEmailEntry->SetComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   744
			iEmailEntry->SetBodyTextComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   745
			StoreEntryStreamsL(KStoreMIMEHeader | KStoreBodyText);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   746
			if (iBodyId==KMsvNullIndexEntryId)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   747
				{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   748
				iBodyId=iEmailEntry->Id();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   749
				}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   750
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   751
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   752
		iSkipData = EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   753
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   754
		// check whether we just found the terminating boundary...
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   755
		if(iMimeParser->IsTerminatingBoundary())
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   756
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   757
			RECVLOG(KRemoveBoundary);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   758
			iMimeParser->RemoveBoundary();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   759
			RECVLOG(KRemovedBoundary);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   760
			iMIMEPart_822Header = EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   761
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   762
			if (EntryId()!=iTopMessagePart)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   763
				{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   764
				if(iEmailPart==KParentPart)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   765
					{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   766
					// rfc822 message which is not  not multipart.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   767
					iEmailPart=KNoPart;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   768
					MoveToParentEntryL();				
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   769
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   770
					// Embedded message
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   771
					iEmailEntry->SetComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   772
					iEmailEntry->SetBodyTextComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   773
					StoreMessageEntryDetailsL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   774
					}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   775
				else if (iEmailEntry->iType==KUidMsvMessageEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   776
					{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   777
					// Moving up from a multi embedded rfc822 message.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   778
					iEmailEntry->SetComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   779
					iEmailEntry->SetBodyTextComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   780
					StoreMessageEntryDetailsL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   781
					}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   782
				}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   783
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   784
			MoveToParentEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   785
			iEntryDataSize = iEmailEntry->iSize;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   786
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   787
			if(iClientEntry->Entry().iType == KUidMsvFolderEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   788
				{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   789
				iCurrentMultipartFolderEntryId = EntryId();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   790
				}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   791
			else if (EntryId()!=iTopMessagePart)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   792
				{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   793
				if(iEmailEntry->iType == KUidMsvMessageEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   794
					{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   795
					iEmailEntry->SetComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   796
					iEmailEntry->SetBodyTextComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   797
					StoreMessageEntryDetailsL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   798
					}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   799
				MoveToParentEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   800
				iEntryDataSize += iEmailEntry->iSize;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   801
				}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   802
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   803
			if(!iNewEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   804
				ResetForNonMimeEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   805
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   806
			RECVLOG(KSkippingData)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   807
			iSkipData = ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   808
			iDefaultEntryType=ETextEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   809
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   810
		else // if regular boundary
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   811
			{ 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   812
			RECVLOG(KSectionHeader)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   813
			if(iEmailPart==KParentPart && EntryId()!=iTopMessagePart)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   814
				{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   815
				// rfc822 message which is not  not multipart.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   816
				iEmailPart=KNoPart;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   817
				MoveToParentEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   818
				// Embedded message
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   819
				iEmailEntry->SetComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   820
				iEmailEntry->SetBodyTextComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   821
				StoreMessageEntryDetailsL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   822
				}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   823
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   824
			if (!iCurrentMultipartFolderEntryId && iEmailPart==KNoPart)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   825
				MoveToParentEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   826
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   827
			ResetForNewEntryL(iDefaultEntryType);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   828
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   829
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   830
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   831
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   832
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   833
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   834
EndOfHeaderProcessingL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   835
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   836
void CImCltRecvConvert::EndOfHeaderProcessingL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   837
	{	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   838
	CreateEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   839
	StoreEntryStreamsL(KStore822Header);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   840
	iEntryDataSize = 0;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   841
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   842
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   843
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   844
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   845
ParseBodyLineL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   846
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   847
@param aSourceLine
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   848
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   849
void CImCltRecvConvert::ParseBodyLineL(const TDesC8& aSourceLine)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   850
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   851
	TInt len=aSourceLine.Length();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   852
	iTopPartialDownloadCounter+=len; // added for TOP. increment the number of bytes of the attachment downloaded so far
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   853
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   854
	if (iBodyId==KMsvNullIndexEntryId)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   855
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   856
		iBodyId=iEmailEntry->Id();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   857
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   858
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   859
	TMsvId id=0;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   860
	// first check whether this line is a UUEncode start boundary
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   861
	if(CheckUUEStartL(aSourceLine)) 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   862
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   863
		RECVLOG(KFoundUUEStartBoundary)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   864
		TFileName tempStore = iAttachmentName;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   865
		id = EntryId();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   866
		if (!iNewNonMIMEBodyPart || id!=iTopMessagePart) // main message entry
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   867
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   868
			iEmailEntry->SetComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   869
			iEmailEntry->SetBodyTextComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   870
			StoreEntryStreamsL(KStoreBodyText);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   871
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   872
		MoveToParentEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   873
		if ( !CreateNonMIMEFolderEntryL(id))
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   874
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   875
			ResetForNonMimeEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   876
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   877
			
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   878
		iEntryType = EAttachmentEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   879
		CreateEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   880
		SetAttachmentName(tempStore);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   881
		
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   882
		iCurrentPartIsRichText = EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   883
		iAlgorithm=EUUDecode;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   884
		iCommitLine=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   885
		if(!iSavingAttachments)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   886
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   887
			RECVLOG(KSkippingData)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   888
			iSkipData=ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   889
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   890
		iNewNonMIMEBodyPart=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   891
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   892
	else if(aSourceLine.CompareF(KImcvUueEnd)==0) // Checks for the UUEncode end boundary
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   893
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   894
		RECVLOG(KFoundUUEEndBoundary)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   895
		CloseAttachmentFileL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   896
		StoreEntryDataL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   897
		MoveToParentEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   898
		iSkipData = EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   899
		iCommitLine=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   900
		iNewNonMIMEBodyPart=ETrue; 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   901
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   902
	else if (iNewNonMIMEBodyPart && !( len==2 && aSourceLine[0]==KImcvCR && aSourceLine[1]==KImcvLF ))
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   903
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   904
		id = EntryId();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   905
		if (!iNewNonMIMEBodyPart || id!=iTopMessagePart)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   906
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   907
			iEmailEntry->SetComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   908
			iEmailEntry->SetBodyTextComplete(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   909
			StoreEntryStreamsL(KStoreBodyText);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   910
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   911
		MoveToParentEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   912
		if ( !CreateNonMIMEFolderEntryL(id))
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   913
			ResetForNonMimeEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   914
		iAlgorithm=ENoAlgorithm;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   915
		iEntryType = ETextEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   916
		CreateEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   917
		iNewNonMIMEBodyPart=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   918
		}	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   919
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   920
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   921
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   922
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   923
CreateNonMIMEFolderEntryL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   924
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   925
@param aCurrentId
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   926
@return
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   927
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   928
TBool CImCltRecvConvert::CreateNonMIMEFolderEntryL(TMsvId aCurrentId)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   929
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   930
	if ( aCurrentId==iTopMessagePart || iCurrentMultipartFolderEntryId )
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   931
		return EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   932
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   933
	iClientEntry->SetEntryL(iTopMessagePart); 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   934
	iEmailPart = KMultiPart;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   935
	iEntryType = EFolderEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   936
	CreateEntryL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   937
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   938
	TMsvId destId = EntryId();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   939
	iClientEntry->SetEntryL(iTopMessagePart); 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   940
	iClientEntry->MoveL(aCurrentId, destId);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   941
	iClientEntry->SetEntryL(aCurrentId);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   942
	iClientEntry->SetEntryL(iClientEntry->Entry().Parent()); 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   943
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   944
	iEmailEntry->SetMessageFolderType(iMimeParser->MessageFolderType());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   945
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   946
	RECVLOG(KResetForNewEntry) 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   947
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   948
	iMimeParser->ResetForNewEntry();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   949
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   950
	if (iStore8BitData)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   951
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   952
		//Create a buffer to hold the body text as it is down loaded.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   953
		delete iBodyBuf;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   954
		iBodyBuf = NULL;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   955
		iBodyBuf = CBufFlat::NewL(KBodyTextChunkSizeBytes);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   956
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   957
	else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   958
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   959
		iOutputBody->Reset();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   960
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   961
		
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   962
	ResetForNonMimeEntryL(); 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   963
	RECVLOG(KResetedForNewEntry) 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   964
	return ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   965
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   966
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   967
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   968
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   969
CreateAttachmentL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   970
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   971
@return
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   972
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   973
TBool CImCltRecvConvert::CreateAttachmentL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   974
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   975
	// added to support TOP command. Reset the download counter each time we have a new
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   976
	// attachment
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   977
	iTopPartialDownloadCounter = 0; 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   978
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   979
	// Need to check that the complete filename: iAttachmentFullPath & iAttachmentName	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   980
	// does not exceed 256 characters. Greater than this and it cannot be saved as a file.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   981
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   982
	TBool addExtension = ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   983
	if(iAttachmentName.Length() == 0)	//i.e. problem with Attachment name
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   984
	    {
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   985
		// No filename present. Generate one.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   986
		if(iMimeParser->ContentDescription().Length()!=0)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   987
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   988
			// Use ContentDescription() as default name 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   989
			// - as this is more informative than the default
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   990
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   991
			TLex sourceLineLex = iMimeParser->ContentDescription();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   992
			ExtractFilename(sourceLineLex, iAttachmentName);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   993
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   994
		else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   995
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   996
			iAttachmentName = *iDefaultAttachmentName;	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   997
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   998
			
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   999
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1000
	else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1001
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1002
		// Filename present. Check it is valid.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1003
		ReplaceInvalidCharacters(iAttachmentName);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1004
		if (iAttachmentName.Locate(KImcvFullStop)!=KErrNotFound)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1005
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1006
			addExtension=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1007
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1008
			
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1009
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1010
	if (addExtension)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1011
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1012
		AddFileExtension();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1013
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1014
	CMsvStore* store = iClientEntry->EditStoreL(); 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1015
	CleanupStack::PushL(store);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1016
	CMsvAttachment* attachment = CMsvAttachment::NewL(CMsvAttachment::EMsvFile);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1017
	CleanupStack::PushL(attachment);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1018
	attachment->SetAttachmentNameL(iAttachmentName);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1019
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1020
	RFile file; 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1021
	store->AttachmentManagerExtensionsL().CreateAttachmentL(iAttachmentName,file,attachment);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1022
	CleanupStack::Pop(attachment);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1023
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1024
	iAttachmentFile.SetFileHandle(file,TImAttachmentFile::EImFileWrite);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1025
	store->CommitL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1026
	CleanupStack::PopAndDestroy(store); // store
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1027
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1028
	if(KErrNone!=iLeaveError)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1029
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1030
		iAttachmentFileState=EFileFailedToOpen;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1031
		CloseAttachmentFileL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1032
		return EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1033
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1034
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1035
	iAttachmentFileState=EFileIsOpen;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1036
	return ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1037
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1038
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1039
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1040
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1041
WriteToAttachmentL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1042
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1043
@param text
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1044
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1045
void CImCltRecvConvert::WriteToAttachmentL(const TDesC8& text)  
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1046
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1047
	if ( (iAttachmentFileState==EFileIsClosed || iAttachmentFileState==EFileNotOpen) 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1048
		&& CreateAttachmentL() && iEntryType!=EHtmlEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1049
			iEmailEntry->SetAttachment(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1050
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1051
	if(iAttachmentFileState!=EFileIsOpen || !text.Length())
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1052
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1053
		RECVLOG(KSkippingData)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1054
		iSkipData = ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1055
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1056
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1057
	// write decoded data into a file if there is any data there to write.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1058
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1059
	RECVLOG(KWritingToFile)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1060
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1061
	// Convert text before writing to attachment.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1062
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1063
	// Store as Binary files..
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1064
	iLeaveError=iAttachmentFile.WriteFile(text);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1065
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1066
	if(KErrNone==iLeaveError)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1067
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1068
		iEntryDataSize += text.Length();	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1069
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1070
		
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1071
	else	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1072
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1073
		// the file write failed (eg.there is no space left), set new file state and skip 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1074
		RECVLOG(KFailedToWriteToFile)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1075
		iAttachmentFileState=EFileIsIncomplete;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1076
		CloseAttachmentFileL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1077
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1078
	RECVLOG(KWroteToFile)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1079
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1080
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1081
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1082
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1083
StoreEntryStreamsL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1084
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1085
void CImCltRecvConvert::StoreEntryStreamsL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1086
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1087
	StoreEntryStreamsL(KStoreBodyText | KStore822Header | KStoreMIMEHeader);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1088
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1089
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1090
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1091
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1092
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1093
StoreEntryStreamsL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1094
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1095
@param aSettings
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1096
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1097
void CImCltRecvConvert::StoreEntryStreamsL(TInt aSettings)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1098
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1099
	RECVLOG(KStartStoringEntryStream);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1100
	if (iReceivingHeadersOnly==EFalse)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1101
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1102
		CMsvStore* entryStore = NULL;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1103
		TBool commitStore = EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1104
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1105
		TRAPD(error, entryStore = iClientEntry->EditStoreL());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1106
		if(error==KErrNone) // if store does not exist then the entry is the wrong type
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1107
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1108
			CleanupStack::PushL(entryStore);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1109
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1110
			if (aSettings & KStore822Header)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1111
				{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1112
				Store822HeaderL(*entryStore, commitStore);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1113
				}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1114
			
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1115
			if (aSettings & KStoreMIMEHeader)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1116
				{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1117
				StoreMIMEHeaderL(*entryStore, commitStore);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1118
				}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1119
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1120
			if (aSettings & KStoreBodyText)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1121
				{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1122
				StoreBodyTextL(*entryStore, commitStore);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1123
				}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1124
			// only commit to the store if I wrote something into it
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1125
			if (commitStore)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1126
				{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1127
				RECVLOG(KStoringEntryStream);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1128
				entryStore->CommitL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1129
				}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1130
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1131
			StoreEntryDataL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1132
			CleanupStack::PopAndDestroy(); //entryStore		
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1133
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1134
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1135
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1136
	RECVLOG(KDoneStoringEntryStream);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1137
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1138
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1139
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1140
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1141
StoreEntryDataL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1142
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1143
@return
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1144
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1145
TBool CImCltRecvConvert::StoreEntryDataL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1146
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1147
	// NB function should only be called if a whole email is being processed
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1148
	TBool commit=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1149
	RECVLOG(KUpdatingEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1150
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1151
	if (iEmailEntry->iType==KUidMsvMessageEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1152
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1153
		iParent->At(0).iSize += iEntryDataSize;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1154
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1155
	else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1156
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1157
		iEmailEntry->iSize += iEntryDataSize;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1158
		if (iEntryType==EAttachmentEntry || iEntryType==EHtmlEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1159
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1160
			iEmailEntry->iDetails.Set(iAttachmentName);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1161
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1162
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1163
	iClientEntry->ChangeL(*iEmailEntry);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1164
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1165
	RECVLOG(KUpdatedEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1166
	return commit;	// if I wrote data into the store, tell owner	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1167
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1168
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1169
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1170
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1171
MoveToParentEntryL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1172
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1173
void CImCltRecvConvert::MoveToParentEntryL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1174
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1175
	// This function changes the context to the current entry's parent entry.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1176
	RECVLOG(KMoveToParentEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1177
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1178
	// Change context to the parent entry	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1179
	if (EntryId()==iTopMessagePart)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1180
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1181
		return; // Already there.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1182
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1183
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1184
	iClientEntry->SetEntryL(iClientEntry->Entry().Parent()); 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1185
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1186
	iNewEntry = EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1187
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1188
	// only read and write to store if this is a real email message; headers stored in
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1189
	// the remote mailbox do not require any store information.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1190
	if (iReceivingHeadersOnly)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1191
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1192
		RECVLOG(KIgnoringStreams)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1193
		return;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1194
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1195
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1196
	TBool allowAttachmentFlag=ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1197
	if(iClientEntry->Entry().iType == KUidMsvFolderEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1198
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1199
		// Current entry is a folder entry signifying a MIME multipart.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1200
		// Change context to the parent entry
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1201
		TMsvEmailEntry entry = (TMsvEmailEntry) iClientEntry->Entry();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1202
		iCurrentMultipartFolderEntryId = EntryId();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1203
		allowAttachmentFlag = !(entry.MessageFolderType()==EFolderTypeRelated || 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1204
								entry.MessageFolderType()==EFolderTypeAlternative);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1205
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1206
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1207
		if (EntryId()!=iTopMessagePart)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1208
			{	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1209
			iClientEntry->SetEntryL(iClientEntry->Entry().Parent()); 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1210
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1211
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1212
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1213
	TBool childIsAttachment = (iEmailEntry->Attachment() || iEmailEntry->iType == KUidMsvMessageEntry) ? ETrue:EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1214
	TBool childIsMHTML=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1215
	// Dont want the flag propogated 'up' past a message entry.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1216
	if(iEmailEntry->iType != KUidMsvMessageEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1217
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1218
		childIsMHTML = iEmailEntry->MHTMLEmail() ? ETrue:EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1219
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1220
	//Make the parent entry the current entry 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1221
	if(iEmailEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1222
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1223
		delete iEmailEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1224
		iEmailEntry=NULL;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1225
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1226
	iEmailEntry = new (ELeave) TMsvEmailEntry(iClientEntry->Entry());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1227
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1228
	if (!iParent->Count())
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1229
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1230
		TParentDetails parentDetails;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1231
		iParent->InsertL(0,parentDetails);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1232
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1233
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1234
	if (! iParent->At(0).iAttachment)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1235
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1236
		iParent->At(0).iAttachment=(childIsAttachment && allowAttachmentFlag)? ETrue:EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1237
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1238
		// if we aren't allowing attachments because of the folder type
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1239
		// remember there where attachments and check at the end whether
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1240
		// it was an MHTML message or not.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1241
		if(childIsAttachment && !allowAttachmentFlag)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1242
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1243
			iRelatedAttachments=ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1244
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1245
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1246
	if (!iParent->At(0).iMHTML)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1247
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1248
		iParent->At(0).iMHTML = childIsMHTML ? ETrue:EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1249
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1250
	iParent->At(0).iSize += iEntryDataSize;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1251
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1252
	iOutputHeader->Reset();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1253
	iEmptyHeaderSize=iOutputHeader->DataSize();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1254
	iMimeParser->ResetForNewEntry();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1255
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1256
	iEntryDataSize=0;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1257
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1258
	RECVLOG(KMovedToParentEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1259
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1260
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1261
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1262
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1263
CreateEntryL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1264
Creates a new entry.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1265
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1266
void CImCltRecvConvert::CreateEntryL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1267
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1268
	RECVLOG(KCreatingEntry);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1269
	if(NULL!=iEmailEntry)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1270
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1271
		delete iEmailEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1272
		iEmailEntry=NULL;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1273
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1274
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1275
	if (iCurrentMultipartFolderEntryId)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1276
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1277
		iClientEntry->SetEntryL(iCurrentMultipartFolderEntryId);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1278
		iCurrentMultipartFolderEntryId=0;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1279
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1280
		
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1281
	iEmailEntry = new (ELeave) TMsvEmailEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1282
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1283
	TValidEntryType previousEntryType = iEntryType;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1284
	if ((iTopMessagePart==KMsvRootIndexEntryId) || iMIMEPart_822Header)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1285
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1286
		// At the main header, want to create a message entry.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1287
		// The stored iEntryType will indicate ( from header info) the next entry to be created.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1288
		// Save temporarily.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1289
		// Also applies to the special case where a message contains ony 1 embedded message.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1290
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1291
		previousEntryType=iEntryType;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1292
		iEntryType=EMessageEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1293
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1294
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1295
	if ((iPopulateMessage) && (iTopMessagePart==KMsvRootIndexEntryId))
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1296
	// If this is the root of a message that is being populated then do not create it.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1297
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1298
		iClientEntry->SetEntryL(iRootEntryId);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1299
		*iEmailEntry = iClientEntry->Entry();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1300
		iTopMessagePart=iRootEntryId;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1301
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1302
		// Delete all the children of the message entry.  This is needed because if the
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1303
		// message has been purged, the entries will still exist.  When the message is populated,
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1304
		// new entries are created.  If the original entries are not removed, then duplicate 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1305
		// entries will exist.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1306
		CMsvEntrySelection*	children = iClientEntry->ChildrenL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1307
		CleanupStack::PushL(children);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1308
		if (children->Count())
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1309
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1310
		TMsvLocalOperationProgress prog;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1311
		iClientEntry->DeleteL(*children,prog);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1312
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1313
		CleanupStack::PopAndDestroy(children);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1314
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1315
	else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1316
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1317
		iEmailEntry->iMtm=iNewMsgType;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1318
		iEmailEntry->iServiceId = iEmailServiceId;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1319
		iEmailEntry->SetComplete(EFalse);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1320
		iEmailEntry->iSize = 0;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1321
		iEmailEntry->SetVisible(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1322
		iEmailEntry->SetInPreparation(EFalse);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1323
		iEmailEntry->SetReceipt(EFalse);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1324
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1325
		iEmailEntry->SetVCard(iMimeParser->VCard());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1326
		iEmailEntry->SetVCalendar(iMimeParser->VCalendar());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1327
		iEmailEntry->SetMessageFolderType(iMimeParser->MessageFolderType());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1328
		iEmailEntry->SetPriority(iImPriority);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1329
		iEmailEntry->SetNew(EFalse);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1330
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1331
		if(iOutputHeader->ReceiptAddress().Length()>0)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1332
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1333
			iEmailEntry->SetReceipt(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1334
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1335
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1336
		iEmailEntry->iDate=iTimeDate;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1337
		switch(iEntryType)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1338
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1339
			case EMessageEntry:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1340
				if(iTopMessagePart==KMsvRootIndexEntryId)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1341
					{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1342
					iEmailEntry->SetUnread(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1343
					iEmailEntry->SetNew(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1344
					iEmailEntry->SetVisible(EFalse);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1345
					iEmailEntry->SetInPreparation(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1346
					iEmailEntry->SetSendingState(KMsvSendStateNotApplicable);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1347
					}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1348
				else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1349
					{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1350
					TParentDetails parentDetails;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1351
					parentDetails.iMHTML=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1352
			        parentDetails.iAttachment=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1353
					parentDetails.iSize=0;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1354
					iParent->InsertL(0,parentDetails);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1355
					}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1356
				iEmailEntry->iType=KUidMsvMessageEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1357
				iEmailEntry->iDetails.Set(iOutputHeader->From());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1358
				iEmailEntry->iDescription.Set(iOutputHeader->Subject());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1359
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1360
			case EFolderEntry:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1361
				iEmailEntry->iType=KUidMsvFolderEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1362
				if (iMimeParser->MessageFolderType()==EFolderTypeUnknown)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1363
					{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1364
					// Get folder type of parent (the message)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1365
					TMsvEmailEntry entry=iClientEntry->Entry();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1366
					iEmailEntry->SetMessageFolderType(entry.MessageFolderType());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1367
					}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1368
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1369
			case EAttachmentEntry:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1370
				iEmailEntry->iType=KUidMsvAttachmentEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1371
				iEmailEntry->iDetails.Set(iAttachmentName);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1372
				iEmailEntry->iDescription.Set(iMimeParser->ContentDescription());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1373
				break; 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1374
			case ETextEntry:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1375
				if ( iMimeParser->ContentDisposition()!=KImcvAttachment)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1376
					iEmailEntry->iType=KUidMsvEmailTextEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1377
				else 
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1378
					{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1379
					iEmailEntry->iType=KUidMsvAttachmentEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1380
					iEmailEntry->iDetails.Set(iAttachmentName);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1381
					iEmailEntry->iDescription.Set(iMimeParser->ContentDescription());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1382
					}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1383
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1384
			case EHtmlEntry:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1385
				iEmailEntry->iType=KUidMsvEmailHtmlEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1386
				// If disposition not set or is inline..
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1387
				if ( iMimeParser->ContentDisposition()==KImcvAttachment)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1388
					iEmailEntry->iType=KUidMsvAttachmentEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1389
				else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1390
					iEmailEntry->SetMHTMLEmail(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1391
				iEmailEntry->iDetails.Set(iAttachmentName);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1392
				iEmailEntry->iDescription.Set(iMimeParser->ContentDescription());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1393
				break;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1394
			default:
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1395
				iEmailEntry->iType=KUidMsvAttachmentEntry;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1396
				iEmailEntry->iDetails.Set(iAttachmentName);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1397
				iEmailEntry->iDescription.Set(iMimeParser->ContentDescription());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1398
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1399
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1400
		iClientEntry->CreateL(*iEmailEntry);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1401
		iEmailEntry->iServiceId = iEmailServiceId;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1402
		iClientEntry->SetEntryL(iEmailEntry->Id());
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1403
		if(iTopMessagePart==KMsvRootIndexEntryId)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1404
			{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1405
			iTopMessagePart=iEmailEntry->Id();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1406
			}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1407
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1408
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1409
	iEntryType=previousEntryType;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1410
	iNewEntry = ETrue;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1411
	RECVLOG(KCreatedEntry);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1412
	}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1413
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1414
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1415
/**
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1416
StoreMessageEntryDetailsL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1417
Stores the details of a message entry.
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1418
*/
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1419
void CImCltRecvConvert::StoreMessageEntryDetailsL()
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1420
	{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1421
	iEmailEntry->SetAttachment(iParent->At(0).iAttachment);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1422
	iEmailEntry->SetMHTMLEmail(iParent->At(0).iMHTML);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1423
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1424
	if(iEmailEntry->MHTMLEmail() == EFalse && iEmailEntry->Attachment() == EFalse && iRelatedAttachments !=EFalse)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1425
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1426
		iEmailEntry->SetAttachment(ETrue);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1427
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1428
	iRelatedAttachments=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1429
	
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1430
	iEmailEntry->iSize=iParent->At(0).iSize;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1431
	iEmailEntry->SetMessageFolderType(iParent->At(0).iFolder);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1432
	StoreEntryDataL();
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1433
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1434
	if (iParent->Count()>1)
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1435
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1436
		iParent->At(1).iSize+=iEmailEntry->iSize;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1437
		iParent->Delete(0);
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1438
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1439
	else
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1440
		{
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1441
		iParent->At(0).iAttachment=iParent->At(0).iMHTML=EFalse;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1442
		iParent->At(0).iSize=0;
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1443
		}
d5603c08781b Added smoketest for email
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
  1444
	}