diff -r 000000000000 -r f72a12da539e idlehomescreen/xmluirendering/uiengine/src/xnproperty.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnproperty.cpp Thu Dec 17 08:40:49 2009 +0200 @@ -0,0 +1,373 @@ +/* +* Copyright (c) 2002-2004 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: Xuikon property source +* +*/ + +// INCLUDE FILES +#include "xnproperty.h" +#include "xndomproperty.h" +#include "xndompropertyvalue.h" +#include "xndomlist.h" +#include "xndomstringpool.h" +#include +#include + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CXnProperty::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnProperty* CXnProperty::NewL( CXnDomProperty* aProperty ) + { + CXnProperty* self = new ( ELeave ) CXnProperty; + + CleanupStack::PushL( self ); + + self->ConstructL( aProperty ); + + CleanupStack::Pop( self ); + + return self; + } + +// ----------------------------------------------------------------------------- +// CXnProperty::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnProperty* CXnProperty::NewL( const TDesC8& aName, + CXnDomPropertyValue* aPropertyValue, CXnDomStringPool& aStringPool ) + { + CXnProperty* self = new ( ELeave ) CXnProperty; + + CleanupStack::PushL( self ); + + self->ConstructL( aName, aPropertyValue, aStringPool ); + + CleanupStack::Pop( self ); + + return self; + } + +// ----------------------------------------------------------------------------- +// CXnProperty::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnProperty* CXnProperty::NewL( const TDesC8& aPropertyName, + const TDesC8& aPropertyValue, + CXnDomPropertyValue::TPrimitiveValueType aValueType, + CXnDomStringPool& aStringPool ) + { + CXnProperty* self = new ( ELeave ) CXnProperty; + CleanupStack::PushL( self ); + + self->ConstructL( aPropertyName, aPropertyValue, aValueType, aStringPool ); + + CleanupStack::Pop( self ); + + return self; + } + +// ----------------------------------------------------------------------------- +// CXnProperty::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnProperty* CXnProperty::NewL( const TDesC8& aPropertyName, + TReal aPropertyValue, + CXnDomPropertyValue::TPrimitiveValueType aValueType, + CXnDomStringPool& aStringPool ) + { + CXnProperty* self = new ( ELeave ) CXnProperty; + CleanupStack::PushL( self ); + + self->ConstructL( aPropertyName, aPropertyValue, aValueType, aStringPool ); + + CleanupStack::Pop( self ); + + return self; + } + +// ----------------------------------------------------------------------------- +// CXnProperty::NewSharedL +// ----------------------------------------------------------------------------- +// +CXnProperty* CXnProperty::NewSharedL( CXnDomProperty* aProperty ) + { + CXnProperty* self = new ( ELeave ) CXnProperty; + + CleanupStack::PushL( self ); + + self->ConstructSharedL( aProperty ); + + CleanupStack::Pop( self ); + + return self; + } + +// ----------------------------------------------------------------------------- +// CXnProperty::~CXnProperty +// Destructor +// ----------------------------------------------------------------------------- +// +CXnProperty::~CXnProperty() + { + if ( iIsDomPropertyOwned ) + { + delete iProperty; + } + } + +// ----------------------------------------------------------------------------- +// CXnProperty::CXnProperty +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CXnProperty::CXnProperty() + { + } + +// ----------------------------------------------------------------------------- +// CXnProperty::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CXnProperty::ConstructL( CXnDomProperty* aProperty ) + { + iProperty = aProperty; + iIsDomPropertyOwned = ETrue; + } + +// ----------------------------------------------------------------------------- +// CXnProperty::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CXnProperty::ConstructL( const TDesC8& aName, + CXnDomPropertyValue* aPropertyValue, CXnDomStringPool& aStringPool ) + { + iProperty = CXnDomProperty::NewL( aName, aStringPool ); + iIsDomPropertyOwned = ETrue; + + CXnDomList& propertyValueList = iProperty->PropertyValueList(); + propertyValueList.AddItemL( aPropertyValue ); + } + +// ----------------------------------------------------------------------------- +// CXnProperty::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CXnProperty::ConstructL( const TDesC8& aPropertyName, + const TDesC8& aPropertyValue, + CXnDomPropertyValue::TPrimitiveValueType aValueType, + CXnDomStringPool& aStringPool ) + { + iProperty = CXnDomProperty::NewL( aPropertyName, aStringPool ); + iIsDomPropertyOwned = ETrue; + + CXnDomPropertyValue* newValue = CXnDomPropertyValue::NewL( aStringPool ); + CleanupStack::PushL( newValue ); + + newValue->SetStringValueL( aValueType, aPropertyValue ); + + CXnDomList& propertyValueList( iProperty->PropertyValueList() ); + + propertyValueList.AddItemL( newValue ); + + CleanupStack::Pop( newValue ); + } + +// ----------------------------------------------------------------------------- +// CXnProperty::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CXnProperty::ConstructL( const TDesC8& aPropertyName, + TReal aPropertyValue, + CXnDomPropertyValue::TPrimitiveValueType aValueType, + CXnDomStringPool& aStringPool ) + { + iProperty = CXnDomProperty::NewL( aPropertyName, aStringPool ); + iIsDomPropertyOwned = ETrue; + + CXnDomPropertyValue* newValue = CXnDomPropertyValue::NewL( aStringPool ); + CleanupStack::PushL( newValue ); + + newValue->SetFloatValueL( aValueType, aPropertyValue ); + + CXnDomList& propertyValueList( iProperty->PropertyValueList() ); + + propertyValueList.AddItemL( newValue ); + + CleanupStack::Pop( newValue ); + } + +// ----------------------------------------------------------------------------- +// CXnProperty::ConstructSharedL +// ----------------------------------------------------------------------------- +// +void CXnProperty::ConstructSharedL( CXnDomProperty* aProperty ) + { + iProperty = aProperty; + iIsDomPropertyOwned = EFalse; + } + +// ----------------------------------------------------------------------------- +// CXnProperty::EqualsL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CXnProperty::EqualsL( CXnProperty& aProperty ) const + { + TBool equals( EFalse ); + + if ( aProperty.Property()->PseudoClass() != iProperty->PseudoClass() ) + { + return equals; + } + + if ( aProperty.Property()->Name() != iProperty->Name() ) + { + return equals; + } + + CXnDomPropertyValue* value1 = static_cast< CXnDomPropertyValue* >( + iProperty->PropertyValueList().Item( 0 ) ); + CXnDomPropertyValue::TPrimitiveValueType primitiveValueType1 = + value1->PrimitiveValueType(); + + CXnDomPropertyValue* value2 = static_cast< CXnDomPropertyValue* >( + aProperty.Property()->PropertyValueList().Item( 0 ) ); + CXnDomPropertyValue::TPrimitiveValueType primitiveValueType2 = + value2->PrimitiveValueType(); + + switch ( primitiveValueType1 ) + { + case CXnDomPropertyValue::ENumber: + case CXnDomPropertyValue::EPercentage: + case CXnDomPropertyValue::EEms: + case CXnDomPropertyValue::EExs: + case CXnDomPropertyValue::EPx: + case CXnDomPropertyValue::ECm: + case CXnDomPropertyValue::EMm: + case CXnDomPropertyValue::EIn: + case CXnDomPropertyValue::EPt: + case CXnDomPropertyValue::EPc: + case CXnDomPropertyValue::EDeg: + case CXnDomPropertyValue::ERad: + case CXnDomPropertyValue::EGrad: + case CXnDomPropertyValue::EMs: + case CXnDomPropertyValue::ES: + case CXnDomPropertyValue::EHz: + case CXnDomPropertyValue::EKHz: + case CXnDomPropertyValue::EUnitValue: + if ( primitiveValueType1 == primitiveValueType2 ) + { + equals = ( value1->FloatValueL() == value2->FloatValueL() ); + } + break; + case CXnDomPropertyValue::EString: + case CXnDomPropertyValue::EIdent: + case CXnDomPropertyValue::EUri: + case CXnDomPropertyValue::EAttr: + case CXnDomPropertyValue::EUnknown: + if ( primitiveValueType2 == CXnDomPropertyValue::EString || + primitiveValueType2 == CXnDomPropertyValue::EIdent || + primitiveValueType2 == CXnDomPropertyValue::EUri || + primitiveValueType2 == CXnDomPropertyValue::EAttr || + primitiveValueType2 == CXnDomPropertyValue::EUnknown ) + { + equals = ( value1->StringValueL() == value2->StringValueL() ); + } + break; + case CXnDomPropertyValue::ERgbColor: + case CXnDomPropertyValue::ERgbaColor: + if ( primitiveValueType1 == primitiveValueType2 ) + { + TRgb rgb1( value1->RgbColorValueL() ); + TRgb rgb2( value2->RgbColorValueL() ); + + equals = ( rgb1 == rgb2 ); + } + break; + default: + break; + } + + return equals; + } + +// ----------------------------------------------------------------------------- +// CXnProperty::Property +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnDomProperty* CXnProperty::Property() + { + return iProperty; + } + +// ----------------------------------------------------------------------------- +// CXnProperty::StringValueL +// ----------------------------------------------------------------------------- +// +EXPORT_C HBufC* CXnProperty::StringValueL() + { + CXnDomPropertyValue* value = static_cast< CXnDomPropertyValue* >( + iProperty->PropertyValueList().Item( 0 ) ); + const TDesC8& name = StringValue(); + HBufC* utfName = HBufC::NewL( name.Length() ); + TPtr16 ptr = utfName->Des(); + CnvUtfConverter::ConvertToUnicodeFromUtf8( ptr, name ); + return utfName; + } + +// ----------------------------------------------------------------------------- +// CXnProperty::StringValue +// ----------------------------------------------------------------------------- +// +EXPORT_C const TDesC8& CXnProperty::StringValue() + { + CXnDomPropertyValue* value = static_cast< CXnDomPropertyValue* >( + iProperty->PropertyValueList().Item( 0 ) ); + return value->StringValue(); + } + +// ----------------------------------------------------------------------------- +// CXnProperty::FloatValueL +// ----------------------------------------------------------------------------- +// +EXPORT_C TReal CXnProperty::FloatValueL() + { + CXnDomPropertyValue* value = static_cast< CXnDomPropertyValue* >( + iProperty->PropertyValueList().Item( 0 ) ); + return value->FloatValueL(); + } + +// ----------------------------------------------------------------------------- +// CXnProperty::CloneL +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnProperty* CXnProperty::CloneL() + { + CXnDomProperty* property = iProperty->CloneL(); + CleanupStack::PushL( property ); + CXnProperty* returnValue = CXnProperty::NewL( property ); + CleanupStack::Pop( property ); + return returnValue; + }