diff -r 000000000000 -r 8466d47a6819 emailuis/uicomponents/inc/fsalftextstylemanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/uicomponents/inc/fsalftextstylemanager.h Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,145 @@ +/* +* 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_FSALFTEXTSTYLEMANAGER_H +#define C_FSALFTEXTSTYLEMANAGER_H + +#include +#include + +class CAlfTextStyleManager; +class TFsTextStyleData; + + +/** + * CFsAlfTextStyleManager + * + * This class is designed to convert CRichText style definitions to + * TAlfTextStyles. 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 = CAlfTextVisual::AddNewL( *iControl, iCurveLayout ); + * visual->SetTextStyle( styleID ); + * + * @endcode + * + * @since S60 v3.2 + */ +class CFsAlfTextStyleManager : CBase + { +public: + + /** + * Two-phased constructor. + * @param aAlfTextStyleManager Reference to the CAlfTextStyleManager + */ + static CFsAlfTextStyleManager* NewL( CAlfTextStyleManager& aAlfTextStyleManager ); + + /** + * Destructor. + */ + ~CFsAlfTextStyleManager(); + + /** + * GetStyleIDL + * + * This is the only public method in CFsAlfTextStyleManager. 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 TAlfTextStyle + */ + 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 TAlfTextStyle or KErrNotFound + */ + TInt GetStyleIDWithOpositeUnderlineL( TInt aId ); + +private: + + CFsAlfTextStyleManager( 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 TAlfTextStyle 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 TAlfTextStyle 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 TAlfTextStyle + */ + TInt CreateNewTextStyleL( const TCharFormat& aCharFormat ); + +private: // data + + /** + * Reference to the CAlfTextStyleManager + */ + CAlfTextStyleManager& iAlfTextStyleManager; + + /** + * Array of previously created styles + */ + RArray iStyles; + + }; + +#endif // C_FSALFTEXTSTYLEMANAGER_H \ No newline at end of file