diff -r 000000000000 -r 8466d47a6819 emailuis/uicomponents/inc/fstextstylemanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/uicomponents/inc/fstextstylemanager.h Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,187 @@ +/* +* Copyright (c) 2007-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: This component converts CRichText style's to HuiTextStyle +* +*/ + + +#ifndef C_FSTEXTSTYLEMANAGER_H +#define C_FSTEXTSTYLEMANAGER_H + +#include +#include + +class CAlfTextStyleManager; + +/** + * TFsTextStyleData + * + * This class is meant only for internal use of CFsTextStyleManager. It + * encapsulates the style information for storage. + * + * @since S60 v3.2 + */ + +class TFsTextStyleData +{ +public: + TFsTextStyleData( const TCharFormat& aCharFormat, TInt aTextStyleID ); + + /** + * Match + * + * Method for comparing to instances of TFsTextStyleData + * + * @since S60 3.2 + * @param aFirst The first TFsTextStyleData + * @param aSecond The other TFsTextStyleData + * @return If match ETrue else EFalse + */ + static TBool Match( const TFsTextStyleData& aFirst, + const TFsTextStyleData& aSecond ); + + static TBool MatchId( const TFsTextStyleData& aFirst, + const TFsTextStyleData& aSecond ); + +public: //Data + + /** + * Stored TCharFormat + */ + const TCharFormat iCharFormat; + + /** + * Stored THuiTextStyle id + */ + TInt iTextStyleID; +}; + + +/** + * CFsTextStyleManager + * + * This class is designed to convert CRichText style definitions to + * THuiTextStyles. To avoid overlapping style definitions, all previously + * created styles are stored in a list. + * + * Example: + * @code + * + * manager = CFsTextStyleManager::NewL( Env().TextStyleManager() ); + * rText.GetChars( someText, charFormat, position ); //CRichText + * TInt styleID = manager->GetStyleIDL( charFormat ); + * visual = CHuiTextVisual::AddNewL( *iControl, iCurveLayout ); + * visual->SetTextStyle( styleID ); + * + * @endcode + * + * @since S60 v3.2 + */ +class CFsTextStyleManager : CBase + { +public: + + /** + * Two-phased constructor. + * @param aHuiTextStyleManager Reference to the CHuiTextStyleManager + */ + static CFsTextStyleManager* NewL( CAlfTextStyleManager& aAlfTextStyleManager ); + + /** + * Destructor. + */ + ~CFsTextStyleManager(); + + /** + * GetStyleIDL + * + * This is the only public method in CFsTextStyleManager. If there + * already a style that matches the given TCharFormat, the ID of this + * style is returned. If not, a new style is created. + * + * @since S60 3.2 + * @param aCharFormat Style format from CRichText + * @return ID for THuiTextStyle + */ + TInt GetStyleIDL( const TCharFormat& aCharFormat ); + + /** + * FindId + * + * The array of previously created styles is searched for matching + * TCharFormat. If not found KErrNotFound is returned. + * + * @since S60 3.2 + * @param aCharFormat Style format from CRichText + * @return ID for THuiTextStyle or KErrNotFound + */ + TInt GetStyleIDWithOpositeUnderlineL( TInt aId ); + +private: + + CFsTextStyleManager( CAlfTextStyleManager& aAlfTextStyleManager ); + + // void ConstructL(); This wasn't needed at the time + + /** + * FindId + * + * The array of previously created styles is searched for matching + * TCharFormat. If not found KErrNotFound is returned. + * + * @since S60 3.2 + * @param aCharFormat Style format from CRichText + * @return ID for THuiTextStyle or KErrNotFound + */ + TInt FindId( const TCharFormat& aCharFormat ); + + + /** + * FindPositionOfId + * + * The array of previously created styles is searched for matching + * ID. If not found KErrNotFound is returned. + * + * @since S60 3.2 + * @param ID Style format from CRichText + * @return position in table for THuiTextStyle or KErrNotFound + */ + TInt FindPositionOfId(TInt aId); + + /** + * CreateNewTextStyleL + * + * Creates a new text style using TCharFormat. + * + * @since S60 3.2 + * @param aCharFormat Style format from CRichText + * @return ID for THuiTextStyle + */ + TInt CreateNewTextStyleL( const TCharFormat& aCharFormat ); + +private: // data + + /** + * Reference to the CHuiTextStyleManager + */ + CAlfTextStyleManager& iAlfTextStyleManager; + + /** + * Array of previously created styles + */ + RArray iStyles; + + }; + +#endif // C_FSTEXTSTYLEMANAGER_H \ No newline at end of file