diff -r 000000000000 -r 8466d47a6819 emailuis/uicomponents/inc/fstextviewervisualizerdata.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/uicomponents/inc/fstextviewervisualizerdata.h Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,216 @@ +/* +* 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: Storage class for visuals belonging to visualizer +* +*/ + + +#ifndef C_FSTEXTVIEWERVISUALIZERDATA_H +#define C_FSTEXTVIEWERVISUALIZERDATA_H + +// removed __FS_ALFRED_SUPPORT flag +//#include +// removed __FS_ALFRED_SUPPORT flag +#include +#include +#include + +class CAlfVisual; +class TAlfRealRect; +class CAlfLayout; +class CAlfAnchorLayout; +class CAlfTextVisual; +class CAlfControl; +class CAlfBorderBrush; +class CFsTextParser; +class CFsTextViewerSelectsManager; +class CFsTextViewerCoordinator; +class CFsTextParser; + +class TKeyArrayPtr : public TKeyArrayFix + { + public: + inline TKeyArrayPtr(TInt aOffset, TKeyCmpText aType) + :TKeyArrayFix(aOffset, aType) {} + inline TKeyArrayPtr(TInt aOffset, TKeyCmpText aType, TInt aLength) + :TKeyArrayFix(aOffset, aType, aLength) {} + inline TKeyArrayPtr(TInt aOffset, TKeyCmpNumeric aType) + :TKeyArrayFix(aOffset, aType) {} + virtual TAny* At(TInt aIndex) const; + }; + +class TFsVisRange + { + public: + TInt iStart; + TInt iEnd; + }; + +class TFsRangedVisual + { + public: + CAlfVisual* iVisual; + CAlfLayout* iLayout; + TRect iRect; + TBool iIsActive; + TBool iIsText; + TBool iEmbed; + TBool iHotspot; + TBool iIsVisible; + TBool iSmiley; + TBool iMoved; + TBidiText::TDirectionality iDirection; + TInt iStart; + TInt iEnd; + TInt iHotspotType; + TInt iId; + TInt iTextStyleId; + TInt iLineNumber; + TRgb iTextColor; + }; + +class TFsPartBgVisual + { + public: + TInt iStart; + TInt iEnd; + CAlfVisual* iVisual; + TRect iRect; + }; + +class TFsCursorPos + { + public: + TInt iVisual; + TInt iOffset; + }; + +class CFsTextViewerVisualizerData : public CBase + { + public: + static CFsTextViewerVisualizerData* NewL( + CAlfControl* aControl, + CFsTextParser* aParser, + CFsTextViewerSelectsManager* aSelector ); + ~CFsTextViewerVisualizerData(); + + public: + void AppendVisualL( TFsRangedVisual aVisual ); + void AppendVisualL( TFsRangedVisual* aVisual ); + void AppendVisualL( CAlfVisual* aVisual, TFsVisRange aRange ); + void AppendLayoutL( CAlfVisual* aVisual, TFsVisRange aRange ); + void AppendBgL( TFsPartBgVisual aBg ); + TBool RemoveBg( CAlfVisual* aVisual ); + void ResetBgArray(); + void InsertVisualL( + TInt aIndex, + CAlfVisual* aVisual, + TFsVisRange aRange ); + void PopVisual(); + void RemoveVisual( TInt aIndex ); + void DisableVisual( TInt aIndex, TBool aStatus = ETrue ); + void DisableVisual( CAlfVisual* aVisual, TBool aStatus = ETrue ); + void EnableVisual( TInt aIndex, TBool aStatus = ETrue ); + void EnableVisual( CAlfVisual* aVisual, TBool aStatus = ETrue ); + CAlfVisual* GetVisual( TInt aIndex ); + TInt GetVisLength( TInt aIndex ); + TInt GetVisStartOffset( TInt aIndex ); + TInt GetVisEndOffset( TInt aIndex ); + TInt GetLayEndOffset( TInt aIndex ); + TFsVisRange GetVisOffsets( TInt aIndex ); + TInt Count(); + TInt Find( CAlfVisual* aVisual ); + TInt FindLayout( CAlfVisual* aVisual ); + TInt Find( TInt aOffset ); + TBool MoveToNextCharL(); + TBool MoveToPrevCharL(); + TInt FindPrevChar(); + TRect GetCursorRectL(); + TInt GetCursorCharOffset(); + void SetCursorCharOffset( TInt aOffset ); + void Sort(); + TInt RestoreL( TFsRangedVisual* aVisual ); + void ScrollAllL( TInt aTrans, TInt aTime, CAlfLayout* aRootLayout ); + TInt GetTextStyle( CAlfTextVisual* aVisual ); + void DimAllHotspotsL(); + void RefreshSelectsL(); + TRect GetVisualPos( TInt aCharIndex ); + TFsRangedVisual* GetVisualAtIndex( TInt aIndex ); + void ScrollFromCharL( TInt aCharIndex, TInt aTrans, TInt aTime, CAlfLayout* aRootLayout ); // leaving + void SetScreenHeight( TInt aScreenHeight ); + TFsRangedVisual* GetVisualWithChar( TInt aCharIndex ); + TFsRangedVisual* GetFirstVisible(); + TFsRangedVisual* GetLastVisible(); + TFsRangedVisual* GetRangedVisual( CAlfVisual* aVisual ); + void UpdateLinesNumbers(); + TInt GetTotalLines(); + TInt RemoveFromLineL( + TInt aLineNumber, + CFsTextViewerCoordinator* aHelper ); + TInt GetFirstCharInLine( TInt aLineNumber ); + // + TInt GetCharLineNumber( TInt aCharNumber ); + // + void SetParser( CFsTextParser* aParser ); + void FindAndHighlightHotspotL( TInt aLine ); + TInt GetCursorLine(); + void ReloadPicturesL( TInt aLine ); + TInt GetTotalHeight(); + void HideActionButtonFromCurrentHighlightedHotspot(); + void ShowActionButtonForCurrentHighlightedHotspotL(); + void HideAll(); + void RestoreVisibleL(); + void RegisterHotspotsL(); + void SetStatusLineLayout( CAlfAnchorLayout* aLayout ); + TInt GetLineOffset( TInt aLine ); + + public: + enum TFsScrollDirection + { + EFsScrollDown = 1, + EFsScrollUp + }; + + private: + void ConstructL(); + CFsTextViewerVisualizerData( + CAlfControl* iControl, + CFsTextParser* aParser, + CFsTextViewerSelectsManager* aSelector ); + // needed anymore ? + //void DoScrollFromCharL( TInt aCharIndex, TInt aTrans, TInt aTime, TRect aVisibleArea ); + // + + private: + RPointerArray iVisArray; + RArray iLayoutArray; + RArray iBgArray; + CAlfAnchorLayout* iStatusLineLayout; + TFsCursorPos iPosition; + TInt iCurrentChar; + TInt iPrevChar; + TInt iLength; + CAlfControl* iControl; + CFsTextParser* iParser; + CFsTextViewerSelectsManager* iSelector; + TInt iScreenOffset; + TInt iTopBorder; + TInt iBottomBorder; + TInt iScreenHeight; + TInt iVisualAmount; + TFsScrollDirection iScrollDirection; + CAlfBorderBrush* iDebugBrush; + }; + +#endif //C_FSTEXTVIEWERVISUALIZERDATA_H