// CMSVPLAINBODYTEXT.H+ −
+ −
// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).+ −
// All rights reserved.+ −
// This component and the accompanying materials are made available+ −
// under the terms of "Eclipse Public License v1.0"+ −
// which accompanies this distribution, and is available+ −
// at the URL "http://www.eclipse.org/legal/epl-v10.html".+ −
//+ −
// Initial Contributors:+ −
// Nokia Corporation - initial contribution.+ −
//+ −
// Contributors:+ −
//+ −
// Description:+ −
//+ −
+ −
#ifndef __CMSVPLAINBODYTEXT_H__+ −
#define __CMSVPLAINBODYTEXT_H__+ −
+ −
+ −
#include <msvstore.h>+ −
#include <mentact.h>+ −
#include <charconv.h>+ −
+ −
class CMsvStore;+ −
class CRichText;+ −
class CParaFormatLayer;+ −
class CCharFormatLayer;+ −
class CCnvCharacterSetConverter;+ −
+ −
/**+ −
This class encapsulates plainbody text information for storage within the+ −
Message Store.It also populates a CRichText object with the 8 bit data+ −
decoded to the specified character set.If a character set is not specified,+ −
then the default character set is used.+ −
+ −
@publishedAll+ −
@released+ −
*/+ −
class CMsvPlainBodyText : public CMsgActive+ −
{+ −
public:+ −
static CMsvPlainBodyText* NewL(MMsvStoreManager& aMsvStoreManager, CMsvStore& aStore, TBool aIs8Bit, TUint aCharsetId, TUint aDefaultCharsetId, TMsvId aMessageId, RFs& aFs);+ −
static CMsvPlainBodyText* NewL(MMsvStoreManager& aMsvStoreManager, CMsvStore& aStore, TMsvId aMessageId, RFs& aFs, TInt aChunkLength);+ −
+ −
IMPORT_C ~CMsvPlainBodyText();+ −
+ −
IMPORT_C void StoreChunkL(const TDesC8& aChunk, TRequestStatus& aStatus);+ −
IMPORT_C void StoreChunkL(const TDesC8& aChunk);+ −
+ −
IMPORT_C void StoreChunkL(const TDesC16& aChunk, TRequestStatus& aStatus);+ −
IMPORT_C void StoreChunkL(const TDesC16& aChunk);+ −
+ −
IMPORT_C void StoreRichTextAsPlainTextL(CRichText& aRichText);+ −
+ −
IMPORT_C void CommitL();+ −
+ −
IMPORT_C void NextChunkL(TDes8& aChunk, TRequestStatus& aStatus);+ −
IMPORT_C void NextChunkL(TDes8& aChunk);+ −
+ −
IMPORT_C void NextChunkL(TDes16& aChunk, TRequestStatus& aStatus);+ −
IMPORT_C void NextChunkL(TDes16& aChunk);+ −
+ −
IMPORT_C void PreviousChunkL(TDes8& aChunk, TRequestStatus& aStatus);+ −
IMPORT_C void PreviousChunkL(TDes8& aChunk);+ −
+ −
IMPORT_C void PreviousChunkL(TDes16& aChunk, TRequestStatus& aStatus);+ −
IMPORT_C void PreviousChunkL(TDes16& aChunk);+ −
+ −
+ −
IMPORT_C void SetCharacterSetL(const TUint aCharset);+ −
IMPORT_C TUint CharacterSet();+ −
IMPORT_C TUint DefaultCharacterSet();+ −
+ −
IMPORT_C TInt Size();+ −
+ −
private:+ −
CMsvPlainBodyText(MMsvStoreManager& aMsvStoreManager, CMsvStore& aStore, TBool aIs8Bit, TUint aCharsetId, TUint aDefaultCharsetId, TMsvId aMessageId, RFs& aFs);+ −
void ConstructWriteL();+ −
+ −
CMsvPlainBodyText(MMsvStoreManager& aMsvStoreManager, CMsvStore& aStore,TMsvId aMessageId, RFs& aFs,TInt aChunkLength);+ −
void ConstructReadL();+ −
+ −
void PrepareToConvertL();+ −
void ConvertChunkToUnicodeForStoreL(const TDesC8& aChunk);+ −
TInt ConvertChunkToUnicodeForRestoreL();+ −
void ExtractNextChunkFromRichText(TDes16& aChunk);+ −
void ExtractPreviousChunkFromRichText(TDes16& aChunk);+ −
void RevertL();+ −
void DoRunL();+ −
void DoComplete();+ −
void DoCancel();+ −
+ −
private:+ −
/** To access APIs related to RFile operations.*/+ −
MMsvStoreManager& iMsvStoreManager;+ −
CMsvStore& iStore;+ −
/** Indicates whether to store text as 8 bit or 16 bit.*/+ −
TBool iIs8Bit;+ −
/** The charset of the body text*/+ −
TUint iCharsetId;+ −
TUint iDefaultCharsetId;+ −
+ −
/** The RFile Path.*/+ −
HBufC* iFilePath;+ −
TMsvId iMessageId;+ −
RFs& iFSession;+ −
+ −
/** The RFile to which body text is written.*/+ −
RFile iFile;+ −
/** Character converter for 8 to 16 bit conversion.*/+ −
CCnvCharacterSetConverter* iConverter;+ −
CRichText* iRichText;+ −
CParaFormatLayer* iParaLayer;+ −
CCharFormatLayer* iCharLayer;+ −
TInt iReadChunkLength;+ −
/** Temporary buffer created to Store chunk while it is being written aynchronously.*/+ −
RBuf16 iTempChunk16;+ −
/** Buffer used to read data from RFile.*/+ −
RBuf8 iRfileReadBuf8;+ −
/** Pointer to 8-bit buffer that needs to be written to RFile.*/+ −
TPtrC8 iRfileWritePtr8;+ −
/** The position from where to extract data in CRichText*/+ −
TInt iPos;+ −
/** Contains the size of the chunk that will be read or write in the RFile*/+ −
TInt iChunkMaxLength;+ −
/** Contains the remaining unconverted Unicode Data*/+ −
HBufC8* iRemainingUnConvertedData;+ −
/** Array that stores the start positions of each chunk,in Rfile*/+ −
RArray<TInt> iStartPosOfEachChunkInFile;+ −
/** Contains the start position of the next chunk*/+ −
TInt iStartPosOfNextChunk;+ −
/** Contains the remaining converted Unicode Data*/+ −
RBuf16 iRemainingConvertedData;+ −
/** Pointer to a 16 bit chunk that is being read from the store.*/+ −
TDes16* iChunk16;+ −
/** Pointer to a 8 bit chunk that is being read from the store.*/+ −
TDes8* iChunk8;+ −
/** Indicates whether the Rfile is commited or not.*/+ −
TBool iIsCommitted;+ −
+ −
/** Indicates whether the chunk being read is last.*/+ −
TBool iIsLastChunk;+ −
/** Indicates whether call to DoRunl was initiated by PreviousChunkL method.*/+ −
TBool iPrevChunk;+ −
/** Indicates whether call to DoRunl was initiated by 8 bit PreviousChunkL and NextChunkL methods.*/+ −
TBool iRetrieving8bit;+ −
/** Enum indicating if RFile is being written or read */+ −
enum {EMsvFileReading, EMsvFileWriting} iMsvFileStatus;+ −
CCnvCharacterSetConverter::TAvailability iAvailable;+ −
//Containes current position of the Rfile+ −
TInt iCurrentFilePos;+ −
};+ −
+ −
#endif//__CMSVPLAINBODYTEXT_H__+ −