--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/uicomponents/inc/fstextparser.h Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,361 @@
+/*
+* Copyright (c) 2007 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: Parser class for parsing CFsRichText
+*
+*/
+
+
+#ifndef C_FSTEXTPARSER_H
+#define C_FSTEXTPARSER_H
+
+//<cmail> removed __FS_ALFRED_SUPPORT flag
+//#include <fsconfig.h>
+//</cmail> removed __FS_ALFRED_SUPPORT flag
+#include <e32base.h>
+#include <badesca.h>
+// <cmail> SF
+#include <alf/alfenv.h>
+// </cmail>
+#include "fstextureobserver.h"
+
+
+class CFsRichText;
+class MFsRichTextObject;
+class CFsSmileyParser;
+class TRichTextExapandArea;
+class TRichTextHotSpotArea;
+class CFsTextureLoader;
+class CFsTextStyleManager;
+class CEikonEnv;
+
+class TTextureIndex
+ {
+ public:
+ TInt iPositionInText;
+ TInt iTextureId;
+ };
+
+class CFsTextParser: public CBase
+ {
+ public:
+ /**
+ * NewL( CFsRichText& aText, CHuiEnv& aEnv );
+ *
+ * @param aText
+ * @param aEnv
+ */
+ static CFsTextParser* NewL(
+ CFsRichText& aText,
+ CAlfEnv& aEnv,
+ CFsTextureLoader* aTextureLoader );
+
+ /**
+ * ~CFsTextParser();
+ *
+ *
+ */
+ ~CFsTextParser();
+
+ /**
+ * SetParsingPosition( TInt aPosition );
+ *
+ * @param aPosition
+ */
+ TBool SetParsingPosition( TInt aPosition );
+
+ /**
+ * MoveParsingPosition( TInt aMoveParsingPositionBy);
+ *
+ * @param aMoveParsingPositionBy
+ */
+ TBool MoveParsingPosition( TInt aMoveParsingPositionBy);
+
+ /**
+ * GetNextObjectL();
+ *
+ * @param
+ */
+ MFsRichTextObject * GetNextObjectL();
+
+ /**
+ * ParseTextL();
+ *
+ * @param
+ */
+ TBool ParseTextL();
+
+ /**
+ * IsNextObject() const;
+ *
+ *
+ */
+ TBool IsNextObject() const;
+
+ /**
+ * MoveBack();
+ *
+ *
+ */
+ void MoveBack();
+
+ /**
+ * SetSmileyParser(CFsSmileyParser* aSmileyParser);
+ *
+ * @param aSmileyParser
+ */
+ void SetSmileyParser(CFsSmileyParser* aSmileyParser);
+
+ /**
+ * SetExpandStatusL(TInt aIdOfExpand, TBool aStatus);
+ *
+ * @param aIdOfExpand
+ * @param aStatus
+ */
+ TBool SetExpandStatusL(TInt aIdOfExpand, TBool aStatus);
+
+ /**
+ * GetRichTextL(TInt aBeginIndex, TInt aEndIndex);
+ *
+ * @param aBeginIndex
+ * @param aEndIndex
+ */
+ CFsRichText* GetRichTextL(TInt aBeginIndex, TInt aEndIndex);
+
+ /**
+ * GetEndIndexOfExpandAreaL(TInt aId);
+ *
+ * @param aId
+ */
+ TInt GetEndIndexOfExpandAreaL(TInt aId);
+
+ /**
+ * GetStartIndexOfExpandAreaL(TInt aId);
+ *
+ * @param aId
+ */
+ TInt GetStartIndexOfExpandAreaL(TInt aId);
+
+ /**
+ * GetBodyIndexOfExpandAreaL(TInt aId);
+ *
+ * @param aId
+ */
+ TInt GetBodyIndexOfExpandAreaL(TInt aId);
+
+ /**
+ * GetEndIndexOfHotSpotAreaL(TInt aId);
+ *
+ * @param aId
+ */
+ TInt GetEndIndexOfHotSpotAreaL(TInt aId, TBool aOriginal = EFalse);
+
+ /**
+ * GetStartIndexOfHotSpotAreaL(TInt aId);
+ *
+ * @param aId
+ */
+ TInt GetStartIndexOfHotSpotAreaL(TInt aId, TBool aOriginal = EFalse );
+
+ /**
+ * SetSizeOfSmile(TSize aSizeOfSmiley);
+ *
+ * @param aSizeOfSmiley
+ */
+ void SetSizeOfSmile(TSize aSizeOfSmiley);
+
+ /**
+ * SetTextStylemanager(CFsTextStyleManager* aTextStyleManager);
+ *
+ * @param aTextStyleManager
+ */
+ void SetTextStylemanager(CFsTextStyleManager* aTextStyleManager);
+
+ /**
+ * CutWord(TInt aBeginOfWord, TInt aNewLengthOfWord);
+ *
+ * @param aBeginOfWord
+ * @param aNewLengthOfWord
+ */
+ void CutWord(TInt aBeginOfWord, TInt aNewLengthOfWord);
+
+ /**
+ * GetTextL(TInt aStart, TInt aEnd, TInt& aStyle);
+ *
+ * @param aStart
+ * @param aEnd
+ * @param aStyle
+ */
+ HBufC* GetTextL(TInt aStart, TInt aEnd) const;
+
+ /**
+ * GetTextureL(TInt aPos);
+ *
+ * @param aPos
+ */
+ CFsTexture& GetTextureL(TInt aPos);
+
+ /**
+ * GetParagraphDirection(TInt aPosInText);
+ *
+ * @param aPosInText
+ */
+ TBidiText::TDirectionality GetParagraphDirection(TInt aPosInText);
+
+ /**
+ * GetParagraphDirection(TInt aPosInText);
+ *
+ * @param aPosInText
+ */
+ TBool SetTextDirection(TInt aStartPosInText, TInt aEndPosInText,
+ TBidiText::TDirectionality aDirection);
+
+
+
+
+
+ private:
+ /**
+ * CFsTextParser( CFsRichText& aText, CHuiEnv& aEnv );
+ *
+ * @param aText
+ * @param aEnv
+ */
+ CFsTextParser(
+ CFsRichText& aText,
+ CAlfEnv& aEnv,
+ CFsTextureLoader* aTextureLoader );
+
+ /**
+ * IsWordPartOfExpandArea(TInt aStartPosition, TInt aEndPosition);
+ *
+ * @param aStartPosition
+ * @param aEndPosition
+ */
+ TInt IsWordPartOfExpandArea(TInt aStartPosition, TInt aEndPosition);
+
+ /**
+ * ConstructL();
+ *
+ *
+ */
+ void ConstructL();
+
+ /**
+ * IsPartOfHotSpot(TInt aIndex);
+ *
+ * @param aIndex
+ */
+ TBool IsPartOfHotSpot(TInt aIndex);
+
+ /**
+ * IsWordPartOfHotSpotArea(TInt aStartPosition, TInt aEndPosition);
+ *
+ * @param aStartPosition
+ * @param aEndPosition
+ */
+ TInt IsWordPartOfHotSpotArea(TInt aStartPosition, TInt aEndPosition);
+
+ /**
+ * ConvertBitmapL(CPicture* aPicture, CFbsBitmap*& aBitmap);
+ *
+ * @param aPicture
+ * @param aBitmap
+ */
+ void ConvertBitmapL(CPicture* aPicture, CFbsBitmap*& aBitmap);
+
+ /**
+ * IsFieldInrange();
+ *
+ *
+ */
+ TBool IsFieldInrange(TInt aStartPosition, TInt aRange);
+
+ /**
+ * IsTexturePosition(TInt aPos, TInt &aId)
+ *
+ */
+ TBool IsTexturePosition(TInt aPos, TInt &aId);
+
+ /**
+ * IsNewLinePresent(TInt aPosition, TInt aLength)
+ *
+ */
+ TInt IsNewLinePresent(TInt aPosition, TInt aLength);
+
+ /*
+ * FindBlokOfText();
+ *
+ */
+ void FindBlokOfText();
+
+ /*
+ * FindNextBlokOfText();
+ *
+ */
+ void FindNextBlokOfText();
+
+ private:
+ CFsRichText& iText;
+ TInt iPosition;
+ TInt iLastPosition;
+ TInt iTypeOfLastObject;
+ CFsSmileyParser* iSmileyParser;
+ RArray<TRichTextExapandArea> iExpandArray;
+ RArray<TRichTextHotSpotArea> iHotSpotArray;
+ RArray<TInt> iNewLineArray;
+ RArray<TBidiText::TDirectionality> iLineDirection;
+ CFsTextureLoader* iTextureLoader;
+ CAlfEnv& iEnv;
+
+ CFsTextStyleManager* iTextStyleManager;
+
+ TBool iIsWordTooLong;
+ TInt iNewLengthOfWord;
+
+ TBool iIsSetSizeOfSmiley;
+ TSize iSizeOfSmiley;
+ CEikonEnv* iEikon;
+ RArray<TInt> iFieldLocation;
+ RArray<TTextureIndex> iTextureIndex;
+
+ //new
+ TInt iLastWordPosition;
+ TInt iLastLength;
+
+
+
+ //variables used in GetNetxObject
+ TCharFormat iGNOCharFormat;
+ TPtrC iGNOSomeText;
+
+ TCharFormat iGNOCharFormatOfNextBlock;
+ TPtrC iGNOSomeTextOfNextBlock;
+ TInt iGNONextPosition;
+ //end of variables used in GetNetxObject
+
+ TInt iLastGetCharsPos;
+ TInt iLastGetCharsLength;
+ TBool iGetCharsUsed;
+
+ TInt iLastGetCharsPosOfNextBlock;
+ TInt iLastGetCharsLengthOfNextBlock;
+ TBool iGetCharsUsedOfNextBlock;
+
+ TInt iNewLineArrayIndex;
+ TInt iLastNewLinePositionIndex;
+
+ };
+
+#endif // C_FSTEXTPARSER_H
+