--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/mmapi_qt/baseline/inc/cmmaplayerproperties.h Tue Aug 31 15:09:22 2010 +0300
@@ -0,0 +1,255 @@
+/*
+* Copyright (c) 2002 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 class is used for storing and parsing properties
+*
+*/
+
+
+#ifndef CMMAPLAYERPROPERTIES_H
+#define CMMAPLAYERPROPERTIES_H
+
+// INCLUDES
+#include <e32base.h>
+
+// STRUCTS
+
+/**
+ * These structs are used for storing array of strings
+ */
+NONSHARABLE_STRUCT(TMMAStaticStr)
+{
+ TInt iLength;
+ const TText* iStr;
+
+ inline const TPtrC operator()() const
+ {
+ return TPtrC(iStr, iLength);
+ }
+};
+
+NONSHARABLE_STRUCT(TMMAStaticStrArray)
+{
+ const TMMAStaticStr* iStr;
+ inline const TPtrC operator()() const
+ {
+ return TPtrC(iStr->iStr, iStr->iLength);
+ }
+};
+
+#define MMA_PARAMETER_ARRAY(name) const TMMAStaticStrArray name[] =
+#define MMA_PARAMETER_STR(name, s) static const TMMAStaticStr name = {sizeof(L##s)/sizeof(TText)-1, (TText*)L##s}
+#define MMA_PARAMETER_ARRAY_SIZE(name) (sizeof(name)/sizeof((name)[0]))
+
+// CLASS DECLARATION
+/**
+* This class is base class for storing and validating
+*/
+
+NONSHARABLE_CLASS(MMMAParameterRule)
+{
+public:
+ /**
+ * Validates key-value pair based on rule. If derived class is leaf with specified key
+ * then it must store value if it is valid.
+ */
+ virtual TBool ValidateAndStoreL(const TDesC& aKey, const TDesC& aValue) = 0;
+
+ /**
+ * Compares key-value pair based on rule and stored value.
+ */
+ virtual TBool Compare(const TDesC& aKey, const TDesC& aValue) = 0;
+ virtual TBool Compare(const TDesC& aKey, const TInt aValue) = 0;
+
+ /**
+ * Gets value for specified key, returns EFalse if specified key is not found
+ */
+ virtual TBool FindProperty(const TDesC& aKey, TPtrC& aValue) = 0;
+ virtual TBool FindProperty(const TDesC& aKey, TInt& aValue) = 0;
+};
+
+// CLASS DECLARATION
+/**
+* This class is used for storing and parsing properties
+* The property string is in format "name=value&name=value&..."
+*
+*/
+
+NONSHARABLE_CLASS(CMMAPlayerProperties): public CBase
+{
+public:// Construction and destruction
+ /**
+ * Two-phased constructor.
+ */
+ static CMMAPlayerProperties* NewL(const TDesC& aProperties,
+ MMMAParameterRule& aRule);
+ /**
+ * Destructor.
+ */
+ ~CMMAPlayerProperties();
+
+protected: // default constructor and second phase construction
+ CMMAPlayerProperties(const TDesC& aProperties, MMMAParameterRule& aRule);
+
+public: // new methods
+ /**
+ * Gets property for given key. Returns EFalse if key cannot
+ * be found
+ */
+ TBool GetProperty(const TDesC& aKey, TInt& aValue) const;
+ TBool GetProperty(const TDesC& aKey, TPtrC& aValue) const;
+
+ /**
+ * Compares that given key and value pair can be found in
+ * given properties string. Notice that this returns EFalse also
+ * if given key is not found.
+ */
+ TBool Compare(const TDesC& aKey, const TInt& aValue) const;
+ TBool Compare(const TDesC& aKey, const TDesC& aValue) const;
+
+ /**
+ * Validates given properties with given rule(s), leaves with
+ * KErrArgument if properties was not valid.
+ */
+
+ void ValidateL() const;
+
+private: //data
+ // properties
+ const TDesC& iProperties;
+ // rule composition
+ MMMAParameterRule& iRule;
+};
+
+
+
+// CLASS DECLARATION
+/**
+* Composite class for storing rule set
+*/
+
+NONSHARABLE_CLASS(CMMAParameterRuleSet): public CBase, public MMMAParameterRule
+{
+public: // Construction and destruction
+ /**
+ * Two-phased constructor.
+ */
+ static CMMAParameterRuleSet* NewLC();
+
+ /**
+ * Destructor.
+ */
+ ~CMMAParameterRuleSet();
+
+protected: // default constructor and second phase construction
+ CMMAParameterRuleSet();
+ virtual void ConstructL();
+
+public: // From MMMAParameterRule
+ TBool ValidateAndStoreL(const TDesC& aKey, const TDesC& aValue);
+ TBool Compare(const TDesC& aKey, const TDesC& aValue);
+ TBool Compare(const TDesC& aKey, const TInt aValue);
+ TBool FindProperty(const TDesC& aKey, TPtrC& aValue);
+ TBool FindProperty(const TDesC& aKey, TInt& aValue);
+
+public: // new methods
+ void AppendRuleL(MMMAParameterRule* aRule);
+
+private: // data
+ // list of rules in this composite, owned
+ CArrayPtrSeg< MMMAParameterRule >* iRules;
+};
+
+// CLASS DECLARATION
+/**
+* Base class for property rules
+*/
+NONSHARABLE_CLASS(TMMAParameterRuleBase): public MMMAParameterRule
+{
+public: // constructor
+ TMMAParameterRuleBase(const TDesC& aKey);
+
+public: // From MMMAParameterRule
+ TBool ValidateAndStoreL(const TDesC& aKey, const TDesC& aValue);
+ TBool Compare(const TDesC& aKey, const TDesC& aValue);
+ TBool Compare(const TDesC& aKey, const TInt aValue);
+ TBool FindProperty(const TDesC& aKey, TPtrC& aValue);
+ TBool FindProperty(const TDesC& aKey, TInt& aValue);
+
+protected: // new methods
+ /**
+ * Returns EFalse if value is not valid for this rule
+ * Derived class must also store value if it is accepted
+ */
+ virtual TBool ValidateValueL(const TDesC& aValue) = 0;
+
+protected: //data
+ const TDesC& iKey;
+ TBool iAssigned;
+};
+
+// CLASS DECLARATION
+/**
+* Rule for TInt
+*/
+NONSHARABLE_CLASS(TMMAParameterRuleInt): public TMMAParameterRuleBase
+{
+public: // constructors
+ TMMAParameterRuleInt(const TDesC& aKey);
+
+ TMMAParameterRuleInt(const TDesC& aKey,
+ const TInt aLowerLimit);
+
+ TMMAParameterRuleInt(const TDesC& aKey,
+ const TInt aLowerLimit,
+ const TInt aUpperLimit);
+
+public: // From MMMAParameterRule
+ TBool ValidateValueL(const TDesC& aValue);
+ TBool Compare(const TDesC& aKey, const TInt aValue);
+ TBool FindProperty(const TDesC& aKey, TInt& aValue);
+
+
+
+private: // data
+ TInt iValue;
+ const TInt iUpperLimit;
+ const TInt iLowerLimit;
+};
+
+// CLASS DECLARATION
+/**
+* Rule for TDesC
+*/
+NONSHARABLE_CLASS(TMMAParameterRuleDes): public TMMAParameterRuleBase
+{
+public: // constructors
+ TMMAParameterRuleDes(const TDesC& aKey);
+
+ TMMAParameterRuleDes(const TDesC& aKey,
+ const TMMAStaticStrArray* aValidValues,
+ const TInt aArraySize);
+
+public: // From MMMAParameterRule
+ TBool ValidateValueL(const TDesC& aValue);
+ TBool Compare(const TDesC& aKey, const TDesC& aValue);
+ TBool FindProperty(const TDesC& aKey, TPtrC& aValue);
+
+
+private: // data
+ TPtrC iValue;
+ // not owned
+ const TMMAStaticStrArray* iValidValues;
+ const TInt iArraySize;
+};
+#endif // CMMAPLAYERPROPERTIES_H