idlehomescreen/xmluirendering/dom/src/xndomproperty.cpp
changeset 0 f72a12da539e
child 2 08c6ee43b396
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/dom/src/xndomproperty.cpp	Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,298 @@
+/*
+* 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<CXnDomPropertyValue*>( 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<CXnDomPropertyValue*>( 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::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() + iStringPool.Offset();
+    iPropValList = CXnDomList::NewL( aStream, iStringPool );
+    
+    iInherited =  TBool( aStream.ReadInt8L() );
+    iPseudoClass = TPseudoClass( aStream.ReadInt8L() );
+    }
+
+//  End of File