diff -r 000000000000 -r 15bf7259bb7c uiaccelerator_plat/alf_visual_api/inc/alf/alfproperty.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiaccelerator_plat/alf_visual_api/inc/alf/alfproperty.h Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,209 @@ +/* +* Copyright (c) 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: Property value for Alfred +* +*/ + + + +#ifndef C_ALFPROPERTYVALUE_H +#define C_ALFPROPERTYVALUE_H + +#include +#include // For max and min int sizes. + +#include + + +/** Property types. */ +enum TAlfPropertyType + { + /** Property has no value type. */ + EAlfPropertyTypeUndefined, + + /** Property is a string. */ + EAlfPropertyTypeString, + + /** Property is a TRangedValue. */ + EAlfPropertyTypeInteger, + + /** Property is a CAlfTimedValue. */ + EAlfPropertyTypeTimedValue + }; + +/** + * A ranged value with specifiable min/max bounds. + */ +class TRangedValue +{ +public: + TRangedValue() + { + iValue = 0; + iMin = INT_MIN; + iMax = INT_MAX; + } + + TRangedValue(TInt aValue, TInt aMin, TInt aMax) + : + iValue(aValue), + iMin(aMin), + iMax(aMax) + { + } + + TInt iValue; + TInt iMin; + TInt iMax; +}; + + + +/** + * Property base class + * + * A generic property value, it can be derived to create new property types + * that can be accessed by name. + * + * @todo This class should be able to represent a generic property without any type. + * + * @see CAlfPropertyOwner + * + */ +NONSHARABLE_CLASS(CAlfProperty) : public CBase + { +public: + + CAlfProperty(); + + ~CAlfProperty(); + + /** + * Constructs a new empty property. + * + * @param aName the name of this property. + */ + void ConstructL(const TDesC8& aName); + + /** + * Returns the type of this property. + * + * @return Property type. + * @see TAlfPropertyType + */ + TAlfPropertyType Type() const; + + /** + * Returns the name of this property. + * + * @return Property name. + */ + const TDesC8& Name() const; + + /** + * Compare names for sort operations. + * Does a letter-by-letter compare of property names. + * + * @param aA First property. + * @param aA Second property. + * @return difference between names. + */ + static TInt CompareByName(const CAlfProperty& aA, const CAlfProperty& aB); + + /** + * Do names match. + * Compares the names of two properties. + * @param aA First property. + * @param aA Second property. + * @return ETrue on a match. + */ + static TBool Matches(const CAlfProperty& aA, const CAlfProperty& aB); + +protected: + HBufC8* iName; // Owned. + TAlfPropertyType iType; + }; + +/** + * Integer value property base class + * + * A single property containing an integer value and its range. + * + */ +NONSHARABLE_CLASS(CAlfPropertyInteger) : public CAlfProperty + { + public: + /* Constructors and destructor. */ + + CAlfPropertyInteger(); + + ~CAlfPropertyInteger(); + + void Set(const TRangedValue& aValue); + + TRangedValue Data() const; + + private: + TRangedValue iValue; + }; + +/** + * Timed value property base class + * + * A single property containing an integer value and its range. + * + */ +NONSHARABLE_CLASS(CAlfPropertyTimedValue) : public CAlfProperty + { + public: + /* Constructors and destructor. */ + + CAlfPropertyTimedValue(); + + ~CAlfPropertyTimedValue(); + + void Set(TAlfTimedValue& aValue); + + TAlfTimedValue& Data(); + + private: + TAlfTimedValue iTimedValue; + }; + + +/** + * String property base class + * + * A single property containing a string. + * + */ +NONSHARABLE_CLASS(CAlfPropertyString) : public CAlfProperty + { + public: + /* Constructors and destructor. */ + + CAlfPropertyString(); + + ~CAlfPropertyString(); + + void SetL(const TDesC& aValue); + + TDesC* Data() const; + + private: + HBufC* iString; + }; + + +#endif // C_ALFPROPERTYVALUE_H