diff -r 000000000000 -r 15bf7259bb7c uiaccelerator_plat/alf_visual_api/inc/alf/alftextstylemanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiaccelerator_plat/alf_visual_api/inc/alf/alftextstylemanager.h Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,240 @@ +/* +* Copyright (c) 2006 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: Text style manager class. +* +*/ + + + +#ifndef C_ALFTEXTSTYLEMANAGER_H +#define C_ALFTEXTSTYLEMANAGER_H + +#include + +/** + * Preconfigured text styles. + * Matching text styles always exist in the text style manager. + * It is possible to retrieve the associated text style object through + * CAlfTextStyleManager::TextStyle() - interface. + */ +enum TAlfPreconfiguredTextStyle + { + EAlfTextStyleNormal = 0, + EAlfTextStyleNormalItalic, + EAlfTextStyleMenuItem, + EAlfTextStyleSmall, + EAlfTextStyleMenuSmall, + EAlfTextStyleMenuTitle, + EAlfTextStyleLarge, + EAlfTextStyleSoftkey, + EAlfTextStyleSupplement, + EAlfTextStyleTitle, + + /** Not a default alf style, will be treated as normal. */ + EAlfTextStyleNotAHuiStyle = EAlfTextStyleNormal + }; + +// Forward declarations. +class CAlfTextStyle; +class CAlfTextVisual; +class CAlfEnv; + +/** + * Text style manager class. This class provides means to create and + * query text styles that will be used to render text. + * Usage: + * + * @code + * //Get Textstyle Manager + * CAlfTextStyleManager* styleMgr = &iEnv->TextStyleManager(); + * + * // Create a textstyle, by passing fontid and preconfigured textstyle as parent id + * TInt newStyleId= styleMgr->CreatePlatformTextStyleL( fontStyleId, + * EAlfTextStyleNormal ); + * CAlfTextStyle* newStyle = styleMgr->TextStyle( newStyleId ); + * + * //Copy textstyle + * TInt copiedId = styleMgr->CopyTextStyle( newStyleId ); + * CAlfTextstyle* copiedStyle = styleMgr->TextStyle( copiedId ); + * + * //Delete textstyle + * TBool issuccess = styleMgr->DeleteTextStyle( newStyleId ); + * issuccess = styleMgr->DeleteTextStyle( copiedId ); + * @endcode + * + * @see CAlfTextstyle + * @see CAlfEnv::TextstyleManager() + * @lib alfclient.lib + * @since S60 v3.2 + */ +NONSHARABLE_CLASS( CAlfTextStyleManager ): public CBase + { +public: + + /* Constructors and destructor. */ + + /** + * Constructor. + */ + static CAlfTextStyleManager* NewL(CAlfEnv& aEnv); + + /** + * Constructor. + */ + static CAlfTextStyleManager* NewLC(CAlfEnv& aEnv); + + /** + * Destructor. + */ + ~CAlfTextStyleManager(); + +public: + + /** + * Creates a new text style object based on the S60 font style id passed into this method. + * Text style font and size are set according to the given S60 id. Ids are defined in + * avkon.hrh in TAknLogicalFontId enumeration. + * A unique toolkit specific ID is constructed and returned. This text style can be + * accessed anytime through the TextStyle - method based on the unique ID. The default + * text style has always ID 0. + * Text styles cascade properties from their parent styles. By default all text styles + * are descended from EAlfTextStyleNormal text style. + * If an invalid parent id is given the created text style will use EAlfTextStyleNormal + * as its parent. + * @see TextStyle() + * + * Created text styles must be deleted with DeleteTextStyle. + * @see DeleteTextStyle() + * + * @param aFontStyleId The S60 font style id based on which the text style object will be created. + * @param aParentId Toolkit specific ID of the parent text style. The text styles are cascaded. + * + * @return Unique toolkit specific ID for the created text style. + */ + IMPORT_C TInt CreatePlatformTextStyleL(TInt aFontStyleId, TInt aParentId); + + /** + * Creates a new text style object based on the parent text style id passed into this method. + * Text style font and size will be the same as the given parent style has. + * A unique toolkit specific ID is constructed and returned. This text style can be + * accessed anytime through the TextStyle - method based on the unique ID. + * Text styles cascade properties from their parent styles. By default all text styles + * are descended from EAlfTextStyleNormal text style. + * If an invalid parent id is given the created text style will use EAlfTextStyleNormal + * as its parent. + * @see TextStyle() + * + * Created text styles must be deleted with DeleteTextStyle. + * @see DeleteTextStyle() + * + * @param aParentId Toolkit specific ID of the parent text style. The text styles are cascaded. + * The parent of the created text style is EAlfTextStyleNormal by default. + * @return Unique toolkit specific ID for the created text style. + */ + IMPORT_C TInt CreatePlatformTextStyleL(TInt aParentId = EAlfTextStyleNormal); + + /** + * Returns a text style object based on the text style id passed into this method. + * If no matching text style is found from the system the method returns the EAlfTextStyleNormal + * text style. There is a collection of preconfigured text styles available. They can + * be queried using the id enumerations from TAlfPreconfiguredTextStyle. + * @see CreatePlatformTextStyleL() + * + * @param aId A text style id identifying the requested text style in the text style manager. + * @return A pointer to a requested text style. Various attributes of the text style + * can be changed using the returned pointer. + */ + IMPORT_C CAlfTextStyle* TextStyle(TInt aId); + + /** + * Creates a new text style object that is identical with the given source text style. + * + * Created/copied text styles must be deleted with DeleteTextStyle. + * @see DeleteTextStyle() + * + * @param aSourceId A toolkit specific ID of the text style to be cloned. + * @return Unique toolkit specific ID for the created text style. + */ + IMPORT_C TInt CopyTextStyleL(TInt aSourceId); + + /** + * Deletes the given text style. + * + * @param aId Text style ID to delete. + * + * @return Error code. KErrNone if text style was deleted + * KErrArgument if there is no style defined with given ID + * KErrAccessDenied if the ID refers to pre-defined styles. + */ + IMPORT_C TInt DeleteTextStyle(TInt aId); + +public: // internal utils + CAlfTextStyle* SwitchTextStyle(TInt aStyle, CAlfTextVisual* aUser); + void Unregister(CAlfTextVisual* aVisual); + void RefreshVisuals(TInt aStyle); + void ReleaseAllVisuals(); + void RefreshAllVisuals(); + +protected: + + /* Constructors. */ + + /** + * Default constructor. + */ + CAlfTextStyleManager(); + + /** + * Second-phase constructor. + */ + void ConstructL(CAlfEnv& aEnv); + +private: + + /** + * Constructs a collection of CAlfTextStyle objects to match the ones + * in TAlfPreconfiguredTextStyle. + * @see TAlfPreconfiguredTextStyle + */ + void ConstructPreconfiguredStylesL(); + + /** + * Find free slot index + * + * @return free slot index + */ + TInt FindFreeSlotIndex() const; + + /** + * Create a platform style. + * + * @see CreatePlatformTextStyleL + * @see CopyTextStyleL + * + * @param aFontStyleId The S60 font style id based on which the text style object will be created. + * @param aParentId Toolkit specific ID of the parent text style. The text styles are cascaded. + * @param aImplementationId Describes the type of text style that is created (platform text style, etc.) + * @return Unique toolkit specific ID for the created text style. + */ + TInt DoCreatePlatformTextStyleL(TInt aFontStyleId, TInt aParentId, TInt aImplementationId); + +private: + + /* Private data. Owned */ + struct TPrivateData; + TPrivateData* iData; + + }; + +#endif // C_ALFTEXTSTYLEMANAGER_H