diff -r 5f0182e07bfb -r 5456b4e8b3a8 idlehomescreen/xmluirendering/dom/src/xndomproperty.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/xmluirendering/dom/src/xndomproperty.cpp Wed Sep 01 12:32:46 2010 +0100 @@ -0,0 +1,323 @@ +/* +* Copyright (c) 2005,2006 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: Represents a Css property. +* +*/ + + + +// INCLUDE FILES +#include "xndomproperty.h" +#include "xndompropertyvalue.h" +#include "xndomlist.h" +#include "xndomstringpool.h" + +// ============================ MEMBER FUNCTIONS =============================== +// ----------------------------------------------------------------------------- +// CXnDomProperty::CXnDomProperty +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CXnDomProperty::CXnDomProperty( CXnDomStringPool* aStringPool ): + iStringPool( aStringPool ) + { + } +// ----------------------------------------------------------------------------- +// CXnDomProperty::CXnDomProperty +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CXnDomProperty::CXnDomProperty( + TInt16 aStringPoolIndex, + CXnDomStringPool* aStringPool ): + iStringPool( aStringPool ), + iNameRef( aStringPoolIndex ) + { + } +// ----------------------------------------------------------------------------- +// CXnDomProperty::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CXnDomProperty::ConstructL( const TDesC8& aName ) + { + iNameRef = iStringPool->AddStringL( aName ); + iPropValList = CXnDomList::NewL( CXnDomList::EPropertyValueList, iStringPool ); + } +// ----------------------------------------------------------------------------- +// CXnDomProperty::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CXnDomProperty::ConstructL() + { + iPropValList = CXnDomList::NewL( CXnDomList::EPropertyValueList, iStringPool ); + } +// ----------------------------------------------------------------------------- +// CXnDomProperty::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnDomProperty* CXnDomProperty::NewL( + const TDesC8& aName, + CXnDomStringPool* aStringPool ) + { + CXnDomProperty* self = new( ELeave ) CXnDomProperty( aStringPool ); + + CleanupStack::PushL( self ); + self->ConstructL( aName ); + CleanupStack::Pop( self ); + + return self; + } + +// ----------------------------------------------------------------------------- +// CXnDomProperty::NewL +// Two-phased stream constructor. +// ----------------------------------------------------------------------------- +// +CXnDomProperty* CXnDomProperty::NewL( + RReadStream& aStream, + CXnDomStringPool* aStringPool ) + { + CXnDomProperty* self = + new( ELeave ) CXnDomProperty( aStringPool ); + + CleanupStack::PushL( self ); + + aStream >> *self; + CleanupStack::Pop( self ); + + return self; + } +// ----------------------------------------------------------------------------- +// CXnDomProperty::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnDomProperty* CXnDomProperty::NewL( + TInt16 aStringPoolIndex, + CXnDomStringPool* aStringPool ) + { + CXnDomProperty* self = + new (ELeave) CXnDomProperty( aStringPoolIndex, aStringPool ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } +// Destructor +EXPORT_C CXnDomProperty::~CXnDomProperty() + { + delete iPropValList; + } +// ----------------------------------------------------------------------------- +// CXnDomProperty::CloneL +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnDomProperty* CXnDomProperty::CloneL() + { + CXnDomProperty* clone = new (ELeave)CXnDomProperty( iStringPool ); + CleanupStack::PushL(clone); + + clone->iPropValList = CXnDomList::NewL( CXnDomList::EPropertyValueList, iStringPool ); + clone->iNameRef = iNameRef; + + TInt count( iPropValList->Length() ); + for (TInt i = 0; i < count; ++i) + { + CXnDomPropertyValue* val = static_cast( iPropValList->Item(i) ); + CXnDomPropertyValue* cloneVal = val->CloneL(); + CleanupStack::PushL( cloneVal ); + clone->iPropValList->AddItemL( cloneVal ); + CleanupStack::Pop( cloneVal ); + } + clone->iInherited = iInherited; + clone->iPseudoClass = iPseudoClass; + CleanupStack::Pop(clone); + return clone; + } + +// ----------------------------------------------------------------------------- +// CXnDomProperty::CloneL +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnDomProperty* CXnDomProperty::CloneL( CXnDomStringPool& aStringPool ) + { + const TDesC8& name = iStringPool->String( iNameRef ); + CXnDomProperty* clone = CXnDomProperty::NewL( name, &aStringPool ); + CleanupStack::PushL(clone); + + TInt count( iPropValList->Length() ); + for (TInt i = 0; i < count; ++i) + { + CXnDomPropertyValue* val = static_cast( iPropValList->Item(i) ); + CXnDomPropertyValue* cloneVal = val->CloneL( aStringPool ); + CleanupStack::PushL( cloneVal ); + clone->iPropValList->AddItemL( cloneVal ); + CleanupStack::Pop( cloneVal ); + } + clone->iInherited = iInherited; + clone->iPseudoClass = iPseudoClass; + CleanupStack::Pop(clone); + return clone; + } + +// ----------------------------------------------------------------------------- +// CXnDomProperty::Name +// ----------------------------------------------------------------------------- +// +EXPORT_C const TDesC8& CXnDomProperty::Name() + { + return iStringPool->String( iNameRef ); + } + +// ----------------------------------------------------------------------------- +// CXnDomProperty::PropertyValue +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnDomList& CXnDomProperty::PropertyValueList() + { + return *iPropValList; + } + +// ----------------------------------------------------------------------------- +// CXnDomProperty::IsValueSet +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CXnDomProperty::IsValueSet() + { + return (iPropValList->Length() > 0); + } + + +// ----------------------------------------------------------------------------- +// CXnDomProperty::Inherited +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CXnDomProperty::Inherited() + { + return iInherited; + } +// ----------------------------------------------------------------------------- +// CXnDomProperty::SetInherited +// ----------------------------------------------------------------------------- +// +EXPORT_C void CXnDomProperty::SetInherited( TBool aInherited ) + { + iInherited = aInherited; + } + +// ----------------------------------------------------------------------------- +// CXnDomProperty::StringPool +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnDomStringPool* CXnDomProperty::StringPool() const + { + return iStringPool; + } +// ----------------------------------------------------------------------------- +// CXnDomProperty::StringPoolIndex +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt16 CXnDomProperty::StringPoolIndex()const + { + return iNameRef; + } + +// ----------------------------------------------------------------------------- +// CXnDomProperty::SwapStringPoolL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CXnDomProperty::SwapStringPoolL( CXnDomStringPool* aStringPool ) + { + if( !aStringPool ) + { + User::Leave( KErrArgument ); + } + + iNameRef = aStringPool->AddStringL( iStringPool->String( iNameRef ) ); + + TInt count = iPropValList->Length(); + for( TInt i = 0; i < count; i++ ) + { + CXnDomPropertyValue* val = + static_cast( iPropValList->Item(i) ); + val->SwapStringPoolL( aStringPool ); + } + + iStringPool = aStringPool; + } + +// ----------------------------------------------------------------------------- +// CXnDomProperty::PseudoClass +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnDomProperty::TPseudoClass CXnDomProperty::PseudoClass() const + { + return iPseudoClass; + } + +// ----------------------------------------------------------------------------- +// CXnDomProperty::SetPseudoClass +// ----------------------------------------------------------------------------- +// +EXPORT_C void CXnDomProperty::SetPseudoClass( TPseudoClass aPseudoClass ) + { + iPseudoClass = aPseudoClass; + } + +// ----------------------------------------------------------------------------- +// CXnDomProperty::Size +// ----------------------------------------------------------------------------- +// +TInt CXnDomProperty::Size() const + { + TInt size( 0 ); + + size += sizeof(TInt16); //iNameRef + size += iPropValList->Size(); + size += sizeof(TInt8); //iInherited + size += sizeof(TInt8); //iPseudoClass + + return size; + } + +// ----------------------------------------------------------------------------- +// CXnDomProperty::ExternalizeL +// ----------------------------------------------------------------------------- +// +void CXnDomProperty::ExternalizeL( RWriteStream& aStream ) const + { + aStream.WriteInt16L( iNameRef ); + aStream << *iPropValList; + aStream.WriteInt8L( iInherited ); + aStream.WriteInt8L( iPseudoClass ); + } +// ----------------------------------------------------------------------------- +// CXnDomProperty::InternalizeL +// ----------------------------------------------------------------------------- +// +void CXnDomProperty::InternalizeL( RReadStream& aStream ) + { + iNameRef = aStream.ReadInt16L(); + iPropValList = CXnDomList::NewL( aStream, iStringPool ); + + iInherited = TBool( aStream.ReadInt8L() ); + iPseudoClass = TPseudoClass( aStream.ReadInt8L() ); + } + +// End of File