--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/menufw/hierarchynavigator/hnutilities/inc/hnliwutils.h Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,268 @@
+/*
+* 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 HNLIWUTILS_H
+#define HNLIWUTILS_H
+
+#include <e32base.h>
+#include <e32hashtab.h>
+#include <liwcommon.h>
+
+
+class CHnMdBaseKey;
+class CLiwGenericParamList;
+class TLiwVariant;
+
+/**
+ * Provides static methods which handles operations
+ * like extracting data from and inserting data to
+ * LIW composite classes ( CLiwGenericParamList, TLiwVariant ).
+ *
+ * @lib hnutilities.lib
+ * @since S60 v5.0
+ * @ingroup group_hnutilities
+ */
+NONSHARABLE_CLASS( HnLiwUtils )
+ {
+public:
+ /**
+ * Appends key-value pairs stored in aKeys to aInParam.
+ * Keys are appended in the same order as they occur in the aKeys array.
+ * Every key value is converted to a TLiwVariant before appending to the
+ * param list.
+ *
+ * @since S60 v5.0
+ * @param aKeys Keys to append.
+ * @param aInParam Param list to be modified.
+ */
+ IMPORT_C static void SetGenericParamListL(
+ const RPointerArray<CHnMdBaseKey> & aKeys,
+ CLiwGenericParamList& aInParam );
+
+ /**
+ * Creates a string representing a selected value from the param list.
+ * The aPath paramter is the path to the selected param list element.
+ *
+ * @since S60 v5.0
+ * @param aParam Param list.
+ * @param aPath URI Path.
+ * @param aBuf Output buffer.
+ * @return Error code.
+ */
+ IMPORT_C static TInt GetStringL(
+ const CLiwGenericParamList& aParam,
+ const TDesC8& aPath,
+ RBuf& aBuf );
+
+ /**
+ * Creates a string representing a selected value from the param list.
+ * The aPath paramter is the path to the selected param list element.
+ *
+ * @since S60 v5.0
+ * @param aParam Param list.
+ * @param aPath URI Path.
+ * @param aBuf Output buffer.
+ * @return Error code.
+ */
+ IMPORT_C static TInt GetStringL(
+ const CLiwGenericParamList& aParam,
+ const TDesC8& aPath,
+ RBuf8& aBuf );
+
+ /**
+ * Returns TInt64 value using the given path.
+ *
+ * @since S60 v5.0
+ * @param aParam Param list.
+ * @param aPath URI Path.
+ * @param aPos Position.
+ * @param aRet Return TInt64 value.
+ * @return TInt64 value or KErrNotFound.
+ */
+ IMPORT_C static TInt GetInt64L( const CLiwGenericParamList& aParam,
+ const TDesC8& aPath, TInt aPos, TInt64& aRet );
+
+ /**
+ * Creates a string representing a selected value from the param list.
+ * The aPath paramter is the path to the selected param list element.
+ *
+ * @since S60 v5.0
+ * @param aParam Param list.
+ * @param aPath URI Path.
+ * @param aPos Position.
+ * @param aBuf Output buffer.
+ * @return Error code.
+ */
+ IMPORT_C static TInt GetStringL(
+ const CLiwGenericParamList& aParam,
+ const TDesC8& aPath,
+ TInt aPos,
+ RBuf& aBuf );
+
+ /**
+ * Creates a string representing a selected value from the param list.
+ * The aPath paramter is the path to the selected param list element.
+ *
+ * @since S60 v5.0
+ * @param aParam Param list.
+ * @param aPath URI Path.
+ * @param aPos Position.
+ * @param aBuf Output buffer.
+ * @return Error code.
+ */
+ IMPORT_C static TInt GetStringL(
+ const CLiwGenericParamList& aParam,
+ const TDesC8& aPath,
+ TInt aPos,
+ RBuf8& aBuf );
+
+ /**
+ * Exctracts variant from param list.
+ *
+ * @since S60 v5.0
+ * @param aParam Param list.
+ * @param aPath URI path.
+ * @param aPos Position.
+ * @param aRet Output buffer.
+ * @return Error code.
+ */
+ IMPORT_C static TInt GetVariantL(
+ const CLiwGenericParamList& aParam,
+ const TDesC8& aPath,
+ TInt aPos,
+ TLiwVariant& aRet );
+
+ /**
+ * Exctracts variant from param list.
+ *
+ * @since S60 v5.0
+ * @param aParam Param list.
+ * @param aPath URI path.
+ * @param aRet Output buffer.
+ * @return Error code.
+ */
+ IMPORT_C static TInt GetVariantL(
+ const CLiwGenericParamList& aParam,
+ const TDesC8& aPath,
+ TLiwVariant& aRet );
+
+ /**
+ * Creates a string representation of a variant value.
+ * Supported variant types are: EVariantTypeDesC,
+ * EVariantTypeDesC8, EVariantTypeTUid, EVariantTypeTInt32,
+ * and EVariantTypeTUint.
+ *
+ * @since S60 v5.0
+ * @param aVariant Source variant.
+ * @param aBuf Output buffer.
+ * @return EFalse if variant type is not supported.
+ */
+ IMPORT_C static TBool VariantToStringL( TLiwVariant& aVariant,
+ RBuf& aBuf );
+
+ /**
+ * Creates a string representation of a variant value.
+ * Supported variant types are: EVariantTypeDesC,
+ * EVariantTypeDesC8, EVariantTypeTUid, EVariantTypeTInt32,
+ * and EVariantTypeTUint.
+ *
+ * @since S60 v5.0
+ * @param aVariant Source variant.
+ * @param aBuf Output buffer.
+ * @return EFalse if variant type is not supported.
+ */
+ IMPORT_C static TBool VariantToStringL( TLiwVariant& aVariant,
+ RBuf8& aBuf );
+
+ /**
+ * Gets total number of items held by an iterable.
+ *
+ * @param aIterable the iterable
+ * @return total number of items stored in aIterable
+ */
+ IMPORT_C static TInt GetIterableItemCountL( CLiwIterable& aIterable );
+
+private:
+
+ /**
+ * Exctracts namespace from param list.
+ *
+ * @since S60 v5.0
+ * @param aParam Param list.
+ * @param aNameSpace Namespace.
+ * @param aRet Output variant.
+ * @return Error code.
+ */
+ static TInt ExtractNameSpaceL( const CLiwGenericParamList& aParam,
+ const TDesC8& aNameSpace,
+ TLiwVariant& aRet );
+
+ /**
+ * Process path for selecting elements separated by colon or slash.
+ *
+ * @since S60 v5.0
+ * @param aPath Path.
+ * @param aPathParts Elements of the path.
+ */
+ static void ParsePathL( const TDesC8& aPath,
+ RArray< TPtrC8 >& aPathParts );
+
+ /**
+ * Replaces the first occurence of the string "$index" with a number.
+ * On successful execution the string contained in aPath8 will have
+ * have the first occurence of the substring "$index" replaced by
+ * a string representation of the number given in aPos.
+ *
+ * @since S60 v5.0
+ * @param aPath8 A path to the variant in the generic param list.
+ * @param aPos A position of the item in the group of items.
+ * @return Length of the new path, ending at the index object.
+ */
+ static TInt ReplaceIndexL( RBuf8& aPath8, TInt aPos );
+
+ /**
+ * Extracts a number enclosed in square brackets from a string.
+ * The number is assumed to be non-negative (otherwise it would be
+ * impossible to determine if the function executed successfully).
+ * If the string contains more than one pair of square brackets, only
+ * the first pair is processed by this method.
+ *
+ * @since S60 v5.0
+ * @param aPosition String containing the position number.
+ * @return Number extracted from string or error code on failure.
+ */
+ static TInt GetPosition( const TDesC8& aPosition );
+
+ /**
+ * Uses iterator object to extract variant pointed by position.
+ *
+ * @since S60 v5.0
+ * @param aIterable Iterator to use.
+ * @param aPos Position of the variant.
+ * @param aVariant Output variant.
+ * @return ETrue if variant found.
+ */
+ static TBool GetIterableByPositionL(
+ CLiwIterable & aIterable,
+ TInt aPos,
+ TLiwVariant & aVariant );
+
+ };
+
+#endif // HNLIWUTILS_H
+