idlehomescreen/xmluirendering/uiengine/src/xnnode.cpp
changeset 0 f72a12da539e
child 15 ff572dfe6d86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnnode.cpp	Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,1140 @@
+/*
+* 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:  Node of the layout tree
+*
+*/
+
+// INCLUDES
+#include "xnnode.h"
+#include "xnnodepluginif.h"
+#include "xnnodeappif.h"
+#include "xnnodeimpl.h"
+#include "xnviewsnodeimpl.h"
+#include "xnviewnodeimpl.h"
+#include "xncomponentnodeimpl.h"
+#include "xnproperty.h"
+#include "xntype.h"
+#include "xncomponent.h"
+#include "xnscrollablecontroladapter.h"
+
+_LIT8( KView, "view" );
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CXnNode::NewL()
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CXnNode* CXnNode::NewL()
+    {
+    CXnNode* self = new ( ELeave ) CXnNode;
+
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CXnNode::ConstructL()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::CXnNode()
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CXnNode::CXnNode()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::~CXnNode()
+// C++ default destructor.
+// -----------------------------------------------------------------------------
+//
+CXnNode::~CXnNode()
+    {
+    delete iImpl;
+    delete iPluginIf;
+    delete iAppIf;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::Impl
+// -----------------------------------------------------------------------------
+//
+CXnNodeImpl* CXnNode::Impl()
+    {
+    return iImpl;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::RootNodeImpl
+// -----------------------------------------------------------------------------
+//
+CXnNodeImpl* CXnNode::RootNodeImpl()
+    {
+    return iRootNodeImpl;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::ViewNodeImpl
+// -----------------------------------------------------------------------------
+//
+CXnViewNodeImpl* CXnNode::ViewNodeImpl()
+    {
+    return iViewNodeImpl;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::ComponentNodeImpl
+// -----------------------------------------------------------------------------
+//
+CXnComponentNodeImpl* CXnNode::ComponentNodeImpl()
+    {
+    return iComponentNodeImpl;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetImpl
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetImpl( CXnNodeImpl* aImpl )
+    {
+    if ( aImpl )
+        {
+        delete iImpl;
+        iImpl = aImpl;
+        iImpl->SetNode( *this );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetRootNodeImpl
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetRootNodeImpl( CXnNodeImpl* aRootNodeImpl )
+    {
+    if ( aRootNodeImpl )
+        {
+        delete iImpl;
+        iRootNodeImpl = aRootNodeImpl;
+        iImpl = iRootNodeImpl;
+        iImpl->SetNode( *this );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetViewsNodeImpl
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetViewsNodeImpl( CXnViewsNodeImpl* aViewsNodeImpl )
+    {
+    if ( aViewsNodeImpl )
+        {
+        delete iImpl;
+        iViewsNodeImpl = aViewsNodeImpl;
+        iImpl = iViewsNodeImpl;
+        iImpl->SetNode( *this );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetViewNodeImpl
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetViewNodeImpl( CXnViewNodeImpl* aViewNodeImpl )
+    {
+    if ( aViewNodeImpl )
+        {
+        delete iImpl;
+        iViewNodeImpl = aViewNodeImpl;
+        iImpl = iViewNodeImpl;
+        iImpl->SetNode( *this );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetComponentNodeImpl
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetComponentNodeImpl( CXnComponentNodeImpl* aComponentNodeImpl )
+    {
+    if ( aComponentNodeImpl )
+        {
+        delete iImpl;
+        iComponentNodeImpl = aComponentNodeImpl;
+        iImpl = iComponentNodeImpl;
+        iImpl->SetNode( *this );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetDropped
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetDropped( const TInt aDropped )
+    {
+    iImpl->SetDropped( aDropped );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::IsDropped
+// -----------------------------------------------------------------------------
+//
+TInt CXnNode::IsDropped() const
+    {
+    return iImpl->IsDropped();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::Type()
+// Returns control type.
+// -----------------------------------------------------------------------------
+//
+CXnType* CXnNode::Type()
+    {
+    return iImpl->Type();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::Parent
+// Get component parent
+// -----------------------------------------------------------------------------
+//
+CXnNode* CXnNode::Parent() const
+    {
+    return iImpl->Parent();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetParent
+// Set component parent
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetParent( CXnNode& aParent )
+    {
+    iImpl->SetParent( aParent );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::AddChildL
+// Adds a child to this container.
+// -----------------------------------------------------------------------------
+//
+void CXnNode::AddChildL( CXnNode* aChild )
+    {
+    if ( aChild )
+        {
+        iImpl->AddChildL( aChild );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::Children
+// -----------------------------------------------------------------------------
+//
+RPointerArray< CXnNode >& CXnNode::Children()
+    {
+    return iImpl->Children();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetPCDataL
+// -----------------------------------------------------------------------------
+void CXnNode::SetPCDataL( const TDesC8& aData )
+    {
+    iImpl->SetPCDataL( aData );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::GetPCData
+// -----------------------------------------------------------------------------
+const TDesC8& CXnNode::GetPCData() const
+    {
+    return iImpl->GetPCData();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetPropertyWithoutNotificationL
+// Set a property.
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetPropertyWithoutNotificationL( CXnProperty* aProperty )
+    {
+    if ( aProperty )
+        {
+        iImpl->SetPropertyWithoutNotificationL( aProperty );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetPropertyL
+// Set a property.
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetPropertyL( CXnProperty* aProperty )
+    {
+    if ( aProperty )
+        {
+        iImpl->SetPropertyL( aProperty );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetPropertyArrayL
+// Set a property array.
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetPropertyArrayL( RPointerArray< CXnProperty >* aPropertyArray )
+    {
+    if ( aPropertyArray )
+        {
+        iImpl->SetPropertyArrayL( *aPropertyArray );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::InitializePropertyL
+// Set a property.
+// -----------------------------------------------------------------------------
+//
+void CXnNode::InitializePropertyL( CXnProperty* aProperty )
+    {
+    if ( aProperty )
+        {
+        iImpl->InitializePropertyL( aProperty );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::GetProperty
+// Gets a property.
+// -----------------------------------------------------------------------------
+//
+CXnProperty* CXnNode::GetPropertyL( const TDesC8& aKey ) const
+    {
+    return iImpl->GetPropertyL( aKey );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetStateL
+// Set a state
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetStateL( const TDesC8& aState, TInt aSource )
+    {
+    iImpl->SetStateL( aState, aSource );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::IsStateSet
+// Check whether a state is set or not
+// -----------------------------------------------------------------------------
+//
+TBool CXnNode::IsStateSet( const TDesC8& aState )
+    {
+    return iImpl->IsStateSet( aState );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetStateWithoutNotificationL
+// Set a state
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetStateWithoutNotificationL( const TDesC8& aState )
+    {
+    iImpl->SetStateWithoutNotificationL( aState );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::UnsetState
+// Unset a pseudoclass
+// -----------------------------------------------------------------------------
+//
+void CXnNode::UnsetStateL( const TDesC8& aState )
+    {
+    iImpl->UnsetStateL( aState );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetRect
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetRect( const TRect& aRect )
+    {
+    iImpl->SetRect( aRect );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::Rect
+// -----------------------------------------------------------------------------
+//
+TRect CXnNode::Rect()
+    {
+    return iImpl->Rect();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetBorderRect
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetBorderRect( const TRect& aRect )
+    {
+    iImpl->SetBorderRect( aRect );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::BorderRect
+// -----------------------------------------------------------------------------
+//
+TRect CXnNode::BorderRect()
+    {
+    return iImpl->BorderRect();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetNormalFlowBorderRect
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetNormalFlowBorderRect( const TRect& aRect )
+    {
+    iImpl->SetNormalFlowBorderRect( aRect );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::NormalFlowBorderRect
+// -----------------------------------------------------------------------------
+//
+TRect CXnNode::NormalFlowBorderRect()
+    {
+    return iImpl->NormalFlowBorderRect();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetMarginRect
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetMarginRect( const TRect& aRect )
+    {
+    iImpl->SetMarginRect( aRect );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::MarginRect
+// -----------------------------------------------------------------------------
+//
+TRect CXnNode::MarginRect()
+    {
+    return iImpl->MarginRect();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetPaddingRect
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetPaddingRect( const TRect& aRect )
+    {
+    iImpl->SetPaddingRect( aRect );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::PaddingRect
+// -----------------------------------------------------------------------------
+//
+TRect CXnNode::PaddingRect()
+    {
+    return iImpl->PaddingRect();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetUiEngine
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetUiEngine( CXnUiEngine& aEngine )
+    {
+    iImpl->SetUiEngine( aEngine );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::UiEngine
+// -----------------------------------------------------------------------------
+//
+CXnUiEngine* CXnNode::UiEngine()
+    {
+    return iImpl->UiEngine();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::ReportXuikonEventL
+// -----------------------------------------------------------------------------
+//
+TBool CXnNode::ReportXuikonEventL( CXnNode& aEventData, TInt aSource )
+    {
+    return iImpl->ReportXuikonEventL( aEventData, aSource );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::OfferKeyEventL
+// -----------------------------------------------------------------------------
+//
+void CXnNode::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
+    {
+    iImpl->OfferKeyEventL( aKeyEvent, aType );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetLayoutCapable
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetLayoutCapable( const TBool aLayoutCapable )
+    {
+    iImpl->SetLayoutCapable( aLayoutCapable );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetLayoutCapable
+// -----------------------------------------------------------------------------
+//
+TBool CXnNode::IsLayoutCapable() const
+    {
+    return iImpl->IsLayoutCapable();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNodeImpl::SetRenderedL
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetRenderedL()
+    {
+    iImpl->SetRenderedL();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNodeImpl::SetLaidOutL
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetLaidOutL()
+    {
+    iImpl->SetLaidOutL();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNodeImpl::IsLaidOut
+// -----------------------------------------------------------------------------
+//
+TBool CXnNode::IsLaidOut() const
+    {
+    return iImpl->IsLaidOut();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::ClearRenderedAndLaidOut
+// -----------------------------------------------------------------------------
+//
+void CXnNode::ClearRenderedAndLaidOut()
+    {
+    iImpl->ClearRenderedAndLaidOut();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::PluginIfL
+// Get node plugin interface
+// -----------------------------------------------------------------------------
+//
+CXnNodePluginIf& CXnNode::PluginIfL()
+    {
+    if ( iPluginIf )
+        {
+        return *iPluginIf;
+        }
+    else
+        {
+        iPluginIf = new ( ELeave ) CXnNodePluginIf( *this );
+        return *iPluginIf;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::AppIfL
+// Get node plugin interface
+// -----------------------------------------------------------------------------
+//
+CXnNodeAppIf& CXnNode::AppIfL()
+    {
+    if ( iAppIf )
+        {
+        return *iAppIf;
+        }
+    else
+        {
+        iAppIf = new ( ELeave ) CXnNodeAppIf( *this );
+        return *iAppIf;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::MakeInterfaceL
+// Create a component interface according to the given type.
+// -----------------------------------------------------------------------------
+//
+XnComponentInterface::MXnComponentInterface* CXnNode::MakeInterfaceL(
+    const TDesC8& aType )
+    {
+    return iImpl->MakeInterfaceL( aType );
+    }
+
+CXnProperty* CXnNode::WidthL()
+    {
+    return iImpl->WidthL();
+    }
+
+CXnProperty* CXnNode::HeightL()
+    {
+    return iImpl->HeightL();
+    }
+
+CXnProperty* CXnNode::MarginLeftL()
+    {
+    return iImpl->MarginLeftL();
+    }
+
+CXnProperty* CXnNode::MarginRightL()
+    {
+    return iImpl->MarginRightL();
+    }
+
+CXnProperty* CXnNode::BorderLeftL()
+    {
+    return iImpl->BorderLeftL();
+    }
+
+CXnProperty* CXnNode::BorderRightL()
+    {
+    return iImpl->BorderRightL();
+    }
+
+CXnProperty* CXnNode::PaddingLeftL()
+    {
+    return iImpl->PaddingLeftL();
+    }
+
+CXnProperty* CXnNode::PaddingRightL()
+    {
+    return iImpl->PaddingRightL();
+    }
+
+CXnProperty* CXnNode::MarginTopL()
+    {
+    return iImpl->MarginTopL();
+    }
+
+CXnProperty* CXnNode::MarginBottomL()
+    {
+    return iImpl->MarginBottomL();
+    }
+
+CXnProperty* CXnNode::BorderTopL()
+    {
+    return iImpl->BorderTopL();
+    }
+
+CXnProperty* CXnNode::BorderBottomL()
+    {
+    return iImpl->BorderBottomL();
+    }
+
+CXnProperty* CXnNode::PaddingTopL()
+    {
+    return iImpl->PaddingTopL();
+    }
+
+CXnProperty* CXnNode::PaddingBottomL()
+    {
+    return iImpl->PaddingBottomL();
+    }
+
+CXnProperty* CXnNode::BorderWidthL()
+    {
+    return iImpl->BorderWidthL();
+    }
+
+CXnProperty* CXnNode::BlockProgressionL()
+    {
+    return iImpl->BlockProgressionL();
+    }
+
+CXnProperty* CXnNode::DirectionL()
+    {
+    return iImpl->DirectionL();
+    }
+
+CXnProperty* CXnNode::PositionL()
+    {
+    return iImpl->PositionL();
+    }
+
+CXnProperty* CXnNode::MaxHeightL()
+    {
+    return iImpl->MaxHeightL();
+    }
+
+CXnProperty* CXnNode::MinHeightL()
+    {
+    return iImpl->MinHeightL();
+    }
+
+CXnProperty* CXnNode::MaxWidthL()
+    {
+    return iImpl->MaxWidthL();
+    }
+
+CXnProperty* CXnNode::MinWidthL()
+    {
+    return iImpl->MinWidthL();
+    }
+
+CXnProperty* CXnNode::DisplayL()
+    {
+    return iImpl->DisplayL();
+    }
+
+CXnProperty* CXnNode::VisibilityL()
+    {
+    return iImpl->VisibilityL();
+    }
+
+CXnProperty* CXnNode::LeftL()
+    {
+    return iImpl->LeftL();
+    }
+
+CXnProperty* CXnNode::RightL()
+    {
+    return iImpl->RightL();
+    }
+
+CXnProperty* CXnNode::TopL()
+    {
+    return iImpl->TopL();
+    }
+
+CXnProperty* CXnNode::BottomL()
+    {
+    return iImpl->BottomL();
+    }
+
+CXnProperty* CXnNode::BorderLeftStyleL()
+    {
+    return iImpl->BorderLeftStyleL();
+    }
+
+CXnProperty* CXnNode::BorderRightStyleL()
+    {
+    return iImpl->BorderRightStyleL();
+    }
+
+CXnProperty* CXnNode::BorderTopStyleL()
+    {
+    return iImpl->BorderTopStyleL();
+    }
+
+CXnProperty* CXnNode::BorderBottomStyleL()
+    {
+    return iImpl->BorderBottomStyleL();
+    }
+
+CXnProperty* CXnNode::BorderStyleL()
+    {
+    return iImpl->BorderStyleL();
+    }
+
+CXnProperty* CXnNode::BorderImageL()
+    {
+    return iImpl->BorderImageL();
+    }
+
+CXnProperty* CXnNode::DisplayPriorityL()
+    {
+    return iImpl->DisplayPriorityL();
+    }
+
+CXnProperty* CXnNode::NameL()
+    {
+    return iImpl->NameL();
+    }
+
+CXnProperty* CXnNode::ValueL()
+    {
+    return iImpl->ValueL();
+    }
+
+CXnProperty* CXnNode::LabelL()
+    {
+    return iImpl->LabelL();
+    }
+
+CXnProperty* CXnNode::InitialFocusL()
+    {
+    return iImpl->InitialFocusL();
+    }
+
+CXnProperty* CXnNode::ClassL()
+    {
+    return iImpl->ClassL();
+    }
+
+CXnProperty* CXnNode::IdL()
+    {
+    return iImpl->IdL();
+    }
+CXnProperty* CXnNode::PathL()
+    {
+    return iImpl->PathL();
+    }
+CXnProperty* CXnNode::MaskPathL()
+    {
+    return iImpl->MaskPathL();
+    }
+
+CXnProperty* CXnNode::NavIndexL()
+    {
+    return iImpl->NavIndexL();
+    }
+
+CXnProperty* CXnNode::VisibleRowsL()
+    {
+    return iImpl->VisibleRowsL();
+    }
+
+CXnProperty* CXnNode::GridColumnsL()
+    {
+    return iImpl->GridColumnsL();
+    }
+
+CXnProperty* CXnNode::GridOrientationL()
+    {
+    return iImpl->GridOrientationL();
+    }
+
+CXnProperty* CXnNode::GridVerDirectionL()
+    {
+    return iImpl->GridVerDirectionL();
+    }
+
+CXnProperty* CXnNode::GridHorDirectionL()
+    {
+    return iImpl->GridHorDirectionL();
+    }
+
+CXnProperty* CXnNode::FocusHorLoopingL()
+    {
+    return iImpl->FocusHorLoopingL();
+    }
+
+CXnProperty* CXnNode::FocusVerLoopingL()
+    {
+    return iImpl->FocusVerLoopingL();
+    }
+
+CXnProperty* CXnNode::ZIndexL()
+    {
+    return iImpl->ZIndexL();
+    }
+
+CXnProperty* CXnNode::BackgroundColorL()
+    {
+    return iImpl->BackgroundColorL();
+    }
+
+CXnProperty* CXnNode::BackgroundImageL()
+    {
+    return iImpl->BackgroundImageL();
+    }
+
+CXnProperty* CXnNode::FocusBackgroundL()
+    {
+    return iImpl->FocusBackgroundL();
+    }
+
+CXnProperty* CXnNode::RefL()
+    {
+    return iImpl->RefL();
+    }
+
+CXnProperty* CXnNode::GridScrollBarMarginL()
+    {
+    return iImpl->GridScrollBarMarginL();
+    }
+
+CXnProperty* CXnNode::GridScrollBarWidthL()
+    {
+    return iImpl->GridScrollBarWidthL();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetDomNode
+// Sets the DOM node pointer
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetDomNode( CXnDomNode* aDomNode )
+    {
+    if ( aDomNode )
+        {
+        iImpl->SetDomNode( aDomNode );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::DomNode
+// Returns the DOM node pointer
+// -----------------------------------------------------------------------------
+//
+CXnDomNode* CXnNode::DomNode()
+    {
+    return iImpl->DomNode();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetHandleTooltip
+// Sets handle tooltip flag.
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetHandleTooltip( TBool aFlag )
+    {
+    iImpl->SetHandleTooltip( aFlag );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::MeasureAdaptiveContentL
+// Measures the adaptive content dimensions.
+// -----------------------------------------------------------------------------
+//
+TSize CXnNode::MeasureAdaptiveContentL( const TSize& aAvailableSize )
+    {
+    return iImpl->MeasureAdaptiveContentL( aAvailableSize );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::IsAdaptive
+// Checks if the node has adaptive content
+// -----------------------------------------------------------------------------
+//
+TInt CXnNode::IsAdaptive( TBool aIgnoreSizeFixed ) const
+    {
+    return iImpl->IsAdaptive( aIgnoreSizeFixed );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetAdaptiveL
+// Marks the node as content based.
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetAdaptiveL( const TInt aAdaptive )
+    {
+    iImpl->SetAdaptiveL( aAdaptive );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::FixAdaptiveSizeL
+// Marks the node as content based.
+// -----------------------------------------------------------------------------
+//
+void CXnNode::FixAdaptiveSizeL( const TSize& aFixedSize )
+    {
+    iImpl->FixAdaptiveSizeL( aFixedSize );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::RestartTimedTrigger
+// Restarts the timed trigger.
+// -----------------------------------------------------------------------------
+//
+void CXnNode::RestartTimedTrigger( TInt aDelay )
+    {
+    CPeriodic* timer = iImpl->PeriodicTimer();
+    if ( timer )
+        {
+        if ( timer->IsActive() )
+            {
+            timer->Cancel();
+            if ( aDelay > 0 )
+                {
+                timer->After( aDelay );
+                }
+            else
+                {
+                iImpl->DeletePeriodic();
+                }
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetTriggerDelay
+// Sets default trigger delay
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetTriggerDelay( TTimeIntervalMicroSeconds32 aDelay )
+    {
+    iTriggerDelay = aDelay;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::TriggerDelay
+// Returns default trigger delay
+// -----------------------------------------------------------------------------
+//
+TTimeIntervalMicroSeconds32 CXnNode::TriggerDelay()
+    {
+    return iTriggerDelay;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetDirtyL
+// Marks the node dirty
+// -----------------------------------------------------------------------------
+//
+void CXnNode::SetDirtyL( TInt aLevel, TBool aDisplayedState )
+    {
+    iImpl->SetDirtyL( aLevel, aDisplayedState );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::RunFocusChangeL
+// Runs focus change
+// -----------------------------------------------------------------------------
+//
+TBool CXnNode::RunFocusChangeL( RPointerArray< CXnNode >& aFocusCandidates )
+    {
+    return iImpl->RunFocusChangeL( aFocusCandidates );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::ReorderNodesL
+// -----------------------------------------------------------------------------
+//
+void CXnNode::ReorderNodesL( CXnNode* aSource, CXnNode* aTarget )
+    {
+    if ( aSource && aTarget )
+        {
+        iImpl->ReorderNodesL( aSource, aTarget );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::FindViewNode
+// -----------------------------------------------------------------------------
+//
+CXnNode* CXnNode::FindViewNode()
+    {
+    CXnNode* tmp = NULL;
+    tmp = Parent();
+    while( tmp )
+        {
+        if ( tmp->Type()->Type() == KView )
+            {
+            break;
+            }
+        else
+            {
+            tmp = tmp->Parent();
+            }
+        }
+    return tmp;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::ShowTooltipsL
+// -----------------------------------------------------------------------------
+//
+void CXnNode::ShowTooltipsL()
+    {
+    if ( IsStateSet( XnPropertyNames::action::trigger::name::KFocus ) )
+        {
+        iImpl->HidePopupsL();
+        iImpl->ShowPopupsL( Rect() );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::HideTooltipsL
+// -----------------------------------------------------------------------------
+//
+void CXnNode::HideTooltipsL()
+    {
+    iImpl->HidePopupsL();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::Namespace
+// -----------------------------------------------------------------------------
+//
+const TDesC8& CXnNode::Namespace()
+    {
+    return iImpl->Namespace();
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::ControlL
+// -----------------------------------------------------------------------------
+//
+CXnControlAdapter* CXnNode::Control() const
+    {
+    CXnComponent* component( NULL );
+
+    if ( iViewNodeImpl )
+        {
+        component = iViewNodeImpl->Component();
+        }
+    else if ( iComponentNodeImpl )
+        {
+        component = iComponentNodeImpl->Component();
+        }
+
+    if ( component )
+        {
+        return component->ControlAdapter();
+        }
+
+    return NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::SetScrollableControl()
+// -----------------------------------------------------------------------------
+//      
+void CXnNode::SetScrollableControl( CXnScrollableControlAdapter* aScrollableControl )
+    {
+    iImpl->SetScrollableControl( aScrollableControl );
+    }
+
+// -----------------------------------------------------------------------------
+// CXnNode::ScrollableControl()
+// -----------------------------------------------------------------------------
+//      
+CXnScrollableControlAdapter* CXnNode::ScrollableControl()
+    {
+    return iImpl->ScrollableControl();
+    }
+