diff -r 000000000000 -r 8466d47a6819 emailuis/uicomponents/inc/fstextparser.h --- /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 + +// removed __FS_ALFRED_SUPPORT flag +//#include +// removed __FS_ALFRED_SUPPORT flag +#include +#include +// SF +#include +// +#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 iExpandArray; + RArray iHotSpotArray; + RArray iNewLineArray; + RArray iLineDirection; + CFsTextureLoader* iTextureLoader; + CAlfEnv& iEnv; + + CFsTextStyleManager* iTextStyleManager; + + TBool iIsWordTooLong; + TInt iNewLengthOfWord; + + TBool iIsSetSizeOfSmiley; + TSize iSizeOfSmiley; + CEikonEnv* iEikon; + RArray iFieldLocation; + RArray 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 +