diff -r 5f0182e07bfb -r 5456b4e8b3a8 menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdlocalization.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdlocalization.h Wed Sep 01 12:32:46 2010 +0100 @@ -0,0 +1,191 @@ +/* +* Copyright (c) 2007-2008 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: +* +*/ + + + +#ifndef C_HNMDLOCALIZATION_H +#define C_HNMDLOCALIZATION_H + + +#include +#include + +class CHnMdLocalizationElement; +class CCoeEnv; + +/** + * Localization. + * + * This class is designed to support localization. + * + * @since S60 5.0 + * @ingroup group_hnmetadatamodel + */ +NONSHARABLE_CLASS(CHnMdLocalization) : public CBase + { +public: + + /** + * Two-phase constructor. + * + * @since S60 5.0 + * @return Fully constructed object. + */ + static CHnMdLocalization* NewL(); + + /** + * Two-phase constructor. + * + * @since S60 5.0 + * @return Fully constructed object. + */ + static CHnMdLocalization* NewLC(); + + /** + * Standard C++ virtual destructor. + * + * @since S60 5.0 + */ + virtual ~CHnMdLocalization(); + + /** + * Appends localizations. + * + * @since S60 5.0 + * @param aElement Xml element. + */ + void AppendLocalizationsL( TXmlEngElement aElement ); + + /** + * Gets element by name. + * + * @since S60 5.0 + * @param aNamespace Namespace. + * @return Localization element. + */ + const CHnMdLocalizationElement* ElementByNamespace( + const TDesC& aNamespace ) const; + + /** + * Loads resource. + * Resources can be defined in formats + * @code : @endcode + * Namespaces can be defined by localization elements, + * but can also point to rsg file. + * Id can be rsg constants, but it can be also numbers. + * + * @since S60 5.0 + * @param aResourceName Resource name. + * @param aDesParams descriptor parameters to format %U, %0U. + * @param aIntParams integer parameters to format %N, %0N.* + * @return Descriptor. + */ + HBufC* LoadL( const TDesC& aResourceName, + const CDesC16Array* aDesParams, + const CArrayFix* aIntParams ); +private: + + /** + * Standard C++ constructor. + * + * @since S60 5.0 + */ + CHnMdLocalization(); + + /** + * Standard symbian 2nd pahse constructor. + * + * @since S60 5.0 + */ + void ConstructL(); + + /** + * Appends element the list of localization elements, it also checks for duplicates + * if it is RSC file it load the file in CoeEnv + * + * @param aElement element to add, ownership is taken + * if element with the same namespace exists element is ignored + * + * @since S60 5.0 + */ + void AppendElementL( CHnMdLocalizationElement* aElement ); + + /** + * Check extension of file and decide it is a resource file + * + * @param aFilename file name to check + * @return ETrue if it is rsc file, else EFalse + */ + TBool IsResourceFile( const TDesC& aFilename ); + + /** + * Formats text. + * + * @since S60 5.0 + * @param aTextToFormat A text to format. + * @param aDesParams Parameters of the text to be formated. + * @param aIntParams Integer parameters of the text to be formated. + */ + HBufC* FormatTextL( const TDesC& aTextToFormat, + const CDesC16Array* aDesParams, + const CArrayFix* aIntParams ); + + /** + * Checks whether the localization element identified by a namespace is + * duplicated. + * + * @param aNamespace Namespace. + */ + TBool IsDuplicateL( TDesC8& aNamespace ); + + /** + * Checks whether the localization element identified by a namespace is + * duplicated. + * + * @param aNamespace Namespace. + */ + TBool IsDuplicateL( TDesC& aNamespace ); + + /** + * Checks whether the localization element identified by a namespace is + * internal. + * + * @param aName Name. + */ + TBool IsInternalL( const TDesC& aName ); + +private: // data + + /** + * CoeEnv. + * Not own. + */ + CCoeEnv* iCoeEnv; + + /** + * Own - Internal offset. + */ + RArray< TInt > iInternalOffset; + + /** + * Own - Internal localization. + */ + RPointerArray iInternalLocalization; + + }; + +#endif // C_HNMMLOCALIZATION_H