--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/uicomponents/src/fsrichtext.cpp Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,388 @@
+/*
+* Copyright (c) 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: Implementation of class CFsTextViewer
+*
+*/
+
+
+#include "emailtrace.h"
+#include "fsrichtext.h"
+#include "fsrichtextfields.h"
+#include "fstexture.h"
+#include <eikenv.h>
+#include <fbs.h>
+
+// ---------------------------------------------------------------------------
+// CMyPicture
+// ---------------------------------------------------------------------------
+EXPORT_C CMyPicture::CMyPicture( TSize aSize, CFbsBitmap& aBitmap )
+ : iSizeInTwips(aSize), iBitmap(&aBitmap), iBitmapMask(NULL)
+ {
+ FUNC_LOG;
+ }
+
+// ---------------------------------------------------------------------------
+// CMyPicture
+// ---------------------------------------------------------------------------
+EXPORT_C CMyPicture::CMyPicture(
+ TSize aSize, CFbsBitmap& aBitmap, CFbsBitmap& aBitmapMask )
+ : iSizeInTwips(aSize), iBitmap(&aBitmap), iBitmapMask(&aBitmapMask)
+ {
+ FUNC_LOG;
+ }
+
+// ---------------------------------------------------------------------------
+// ~CMyPicture
+// ---------------------------------------------------------------------------
+EXPORT_C CMyPicture::~CMyPicture()
+ {
+ FUNC_LOG;
+ delete iBitmap;
+ delete iBitmapMask;
+ }
+// ---------------------------------------------------------------------------
+// Draw
+// ---------------------------------------------------------------------------
+EXPORT_C void CMyPicture::Draw( CGraphicsContext& /*aGc*/,
+ const TPoint& /*aTopLeft*/,
+ const TRect& /*aClipRect*/,
+ MGraphicsDeviceMap* /*aMap*/ ) const
+ {
+ FUNC_LOG;
+ }
+
+// ---------------------------------------------------------------------------
+// ExternalizeL
+// ---------------------------------------------------------------------------
+EXPORT_C void CMyPicture::ExternalizeL( RWriteStream& /*aStream*/ ) const
+ {
+ FUNC_LOG;
+ }
+
+// ---------------------------------------------------------------------------
+// SetOriginalSizeInTwips
+// ---------------------------------------------------------------------------
+EXPORT_C void CMyPicture::SetOriginalSizeInTwips( TSize aSize )
+ {
+ FUNC_LOG;
+ iSizeInTwips = aSize;
+ }
+
+// ---------------------------------------------------------------------------
+// GetOriginalSizeInTwips
+// ---------------------------------------------------------------------------
+EXPORT_C void CMyPicture::GetOriginalSizeInTwips( TSize& aSize ) const
+ {
+ FUNC_LOG;
+ aSize = iSizeInTwips;
+ }
+
+// ---------------------------------------------------------------------------
+// GetBitmap
+// ---------------------------------------------------------------------------
+EXPORT_C CFbsBitmap* CMyPicture::GetBitmap()
+ {
+ FUNC_LOG;
+ return iBitmap;
+ }
+
+// ---------------------------------------------------------------------------
+// GetBitmapMask
+// ---------------------------------------------------------------------------
+EXPORT_C CFbsBitmap* CMyPicture::GetBitmapMask()
+ {
+ FUNC_LOG;
+ return iBitmapMask;
+ }
+
+// ---------------------------------------------------------------------------
+// NewL
+// ---------------------------------------------------------------------------
+EXPORT_C CFsRichText* CFsRichText::NewL(const CParaFormatLayer* aGlobalParaLayer,
+ const CCharFormatLayer* aGlobalCharLayer,
+ TDocumentStorage aStorage,
+ TInt aDefaultTextGranularity,
+ TParaType aParaType)
+ {
+ FUNC_LOG;
+ CFsRichText* self =
+ new(ELeave) CFsRichText(aGlobalParaLayer, aGlobalCharLayer);
+ CleanupStack::PushL(self);
+ self->ConstructL(aStorage, aDefaultTextGranularity, aParaType);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// NewL
+// ---------------------------------------------------------------------------
+EXPORT_C CFsRichText* CFsRichText::NewL(const CParaFormatLayer* aGlobalParaLayer,
+ const CCharFormatLayer* aGlobalCharLayer,
+ const CStyleList& aStyleList,
+ TDocumentStorage aStorage,
+ TInt aDefaultTextGranularity,
+ TParaType aParaType)
+ {
+ FUNC_LOG;
+ CFsRichText* self = new(ELeave) CFsRichText(
+ aGlobalParaLayer,
+ aGlobalCharLayer,
+ CONST_CAST(CStyleList*, &aStyleList));
+ CleanupStack::PushL(self);
+ self->ConstructL(aStorage, aDefaultTextGranularity, aParaType);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// NewL
+// ---------------------------------------------------------------------------
+EXPORT_C CFsRichText* CFsRichText::NewL(const CStreamStore& aStore,
+ TStreamId aStreamId,
+ const CParaFormatLayer* aGlobalParaLayer,
+ const CCharFormatLayer* aGlobalCharLayer,
+ MTextFieldFactory* aFieldFactory,
+ TDocumentStorage aStorage)
+ {
+ FUNC_LOG;
+ CFsRichText* self =
+ new(ELeave) CFsRichText(aGlobalParaLayer, aGlobalCharLayer);
+ CleanupStack::PushL(self);
+ self->ConstructL(aStore, aStreamId, NULL, NULL, aFieldFactory, aStorage);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// NewL
+// ---------------------------------------------------------------------------
+EXPORT_C CFsRichText* CFsRichText::NewL(const CStreamStore& aStore,
+ TStreamId aStreamId,
+ const CParaFormatLayer* aGlobalParaLayer,
+ const CCharFormatLayer* aGlobalCharLayer,
+ MPictureFactory* aPictureFactory,
+ MRichTextStoreResolver* aStoreResolver,
+ MTextFieldFactory* aFieldFactory,
+ TDocumentStorage aStorage)
+
+ {
+ FUNC_LOG;
+ CFsRichText* self =
+ new(ELeave) CFsRichText(aGlobalParaLayer, aGlobalCharLayer);
+ CleanupStack::PushL(self);
+ self->ConstructL(
+ aStore,
+ aStreamId,
+ aPictureFactory,
+ aStoreResolver,
+ aFieldFactory,
+ aStorage);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// ~CFsRichText()
+// ---------------------------------------------------------------------------
+EXPORT_C CFsRichText::~CFsRichText()
+ {
+ FUNC_LOG;
+ iExpandAreaArray.Close();
+ iHotSpotAreaArray.Close();
+ iPictureAreaArray.Close();
+ }
+
+// ---------------------------------------------------------------------------
+// CFsRichText
+// ---------------------------------------------------------------------------
+CFsRichText::CFsRichText(const CParaFormatLayer* aGlobalParaLayer,
+ const CCharFormatLayer* aGlobalCharLayer,
+ CStyleList* aStyleList)
+ :CRichText(aGlobalParaLayer, aGlobalCharLayer, aStyleList)
+ {
+ FUNC_LOG;
+
+ }
+
+// ---------------------------------------------------------------------------
+// SetPictureL
+// ---------------------------------------------------------------------------
+EXPORT_C TBool CFsRichText::SetPictureL(TFileName aFileName, TInt aIndex)
+ {
+ FUNC_LOG;
+ TBool retVal = ETrue;
+
+ TRichTextPictureArea richTextPictureArea;
+
+ richTextPictureArea.iFileName = aFileName;
+ richTextPictureArea.iPictureIndex = aIndex;
+
+ iPictureAreaArray.AppendL(richTextPictureArea);
+
+ return retVal;
+ }
+
+// ---------------------------------------------------------------------------
+// SetHotSpotL
+// ---------------------------------------------------------------------------
+EXPORT_C TBool CFsRichText::SetHotSpotL(TInt aStartIndex, TInt aLength, TInt aId)
+ {
+ FUNC_LOG;
+ TBool retVal = ETrue;
+
+ for(TInt i = 0 ; i < iHotSpotAreaArray.Count() ; ++i)
+ {
+ if((aStartIndex >= iHotSpotAreaArray[i].iStartIndex &&
+ aStartIndex < iHotSpotAreaArray[i].iStartIndex + iHotSpotAreaArray[i].iLength) ||
+ (aStartIndex + aLength >= iHotSpotAreaArray[i].iStartIndex &&
+ aStartIndex + aLength < iHotSpotAreaArray[i].iStartIndex + iHotSpotAreaArray[i].iLength))
+ {
+ retVal = EFalse;
+ }
+ }
+
+ if( retVal )
+ {
+ TRichTextHotSpotArea richTextHotSpotArea;
+
+ richTextHotSpotArea.iStartIndex = aStartIndex;
+ richTextHotSpotArea.iOriginalStartIndex = aStartIndex;
+ richTextHotSpotArea.iLength = aLength;
+ richTextHotSpotArea.iOriginalLength = aLength;
+ richTextHotSpotArea.iId = aId;
+
+ iHotSpotAreaArray.AppendL(richTextHotSpotArea);
+ }
+
+ return retVal;
+ }
+
+// ---------------------------------------------------------------------------
+// SetExpandL
+// ---------------------------------------------------------------------------
+EXPORT_C TBool CFsRichText::SetExpandL(TInt aStartIndex, TInt aLength, TInt aCaptionLength)
+ {
+ FUNC_LOG;
+ TBool retVal = ETrue;
+
+ for(TInt i = 0 ; i < iExpandAreaArray.Count() ; ++i)
+ {
+ if((aStartIndex >= iExpandAreaArray[i].iStartIndex &&
+ aStartIndex < iExpandAreaArray[i].iStartIndex + iExpandAreaArray[i].iLength) ||
+ (aStartIndex + aLength >= iExpandAreaArray[i].iStartIndex &&
+ aStartIndex + aLength < iExpandAreaArray[i].iStartIndex + iExpandAreaArray[i].iLength))
+ {
+ retVal = EFalse;
+ }
+ }
+
+ if(retVal)
+ {
+ TRichTextExapandArea richTextExpandArea;
+
+ richTextExpandArea.iStartIndex = aStartIndex;
+ richTextExpandArea.iLength = aLength;
+ richTextExpandArea.iCaptionLength = aCaptionLength;
+ richTextExpandArea.iIsExpand = EFalse;
+
+ iExpandAreaArray.AppendL(richTextExpandArea);
+ }
+
+ return retVal;
+ }
+
+// ---------------------------------------------------------------------------
+// GetNumberOfExpandAreas
+// ---------------------------------------------------------------------------
+EXPORT_C TInt CFsRichText::GetNumberOfExpandAreas()
+ {
+ FUNC_LOG;
+ return iExpandAreaArray.Count();
+ }
+
+// ---------------------------------------------------------------------------
+// GetNumberOfPicture
+// ---------------------------------------------------------------------------
+EXPORT_C TInt CFsRichText::GetNumberOfPicture()
+ {
+ FUNC_LOG;
+ return iPictureAreaArray.Count();
+ }
+
+// ---------------------------------------------------------------------------
+// GetNumberOfHotSpotAreas
+// ---------------------------------------------------------------------------
+EXPORT_C TInt CFsRichText::GetNumberOfHotSpotAreas()
+ {
+ FUNC_LOG;
+ return iHotSpotAreaArray.Count();
+ }
+
+// ---------------------------------------------------------------------------
+// GetExpandAreaL
+// ---------------------------------------------------------------------------
+EXPORT_C TRichTextExapandArea CFsRichText::GetExpandAreaL(TInt aIndex)
+ {
+ FUNC_LOG;
+ if(aIndex > iExpandAreaArray.Count())
+ {
+ User::Leave(KErrArgument);
+ }
+
+ return iExpandAreaArray[aIndex];
+ }
+
+// ---------------------------------------------------------------------------
+// GetHotSpotAreaL
+// ---------------------------------------------------------------------------
+EXPORT_C TRichTextHotSpotArea CFsRichText::GetHotSpotAreaL(TInt aIndex)
+ {
+ FUNC_LOG;
+ if(aIndex > iHotSpotAreaArray.Count())
+ {
+ User::Leave(KErrArgument);
+ }
+
+ return iHotSpotAreaArray[aIndex];
+ }
+
+// ---------------------------------------------------------------------------
+// GetPictureArea
+// ---------------------------------------------------------------------------
+// <cmail>
+EXPORT_C TRichTextPictureArea CFsRichText::GetPictureAreaL(TInt aIndex)
+// </cmail>
+ {
+ FUNC_LOG;
+ if(aIndex > iPictureAreaArray.Count())
+ {
+ User::Leave(KErrArgument);
+ }
+
+ return iPictureAreaArray[aIndex];
+ }
+
+// ---------------------------------------------------------------------------
+// Reset
+// ---------------------------------------------------------------------------
+EXPORT_C void CFsRichText::Reset()
+ {
+ FUNC_LOG;
+ CRichText::Reset();
+ iExpandAreaArray.Reset();
+ iHotSpotAreaArray.Reset();
+ iPictureAreaArray.Reset();
+ }
+