idlehomescreen/inc/xnnode.h
changeset 0 f72a12da539e
child 15 ff572dfe6d86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/inc/xnnode.h	Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,1193 @@
+/*
+* 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 layout tree
+*
+*/
+
+#ifndef XNNODE_H
+#define XNNODE_H
+
+// System includes
+#include <e32base.h>
+#include <w32std.h>
+
+// User includes
+
+// Forward declarations
+class CXnType;
+class CXnProperty;
+class CXnNodeImpl;
+class CXnViewsNodeImpl;
+class CXnViewNodeImpl;
+class CXnComponentNodeImpl;
+class CXnUiEngine;
+class CXnNodePluginIf;
+class CXnNodeAppIf;
+class CXnDomNode;
+class CXnControlAdapter;
+class CXnScrollableControlAdapter;
+namespace XnComponentInterface
+    {
+    class MXnComponentInterface;
+    }
+
+// Constants
+namespace XnDirtyLevel
+    {
+    /** Not dirty */
+    const TInt ENone = 0;
+    /** Draw node's appearance */
+    const TInt ERender = 1;
+    /** Layout and draw node's appearance */
+    const TInt ELayoutAndRender = 2;
+    /** Layout and draw node's and its siblings appearance */
+    const TInt ELayoutAndRenderSiblings = 3;
+    }
+
+namespace XnNodeLayout
+    {
+    const TInt ENone = 0;
+    const TInt EDropped = 1;
+    const TInt ENotLayouted = 2;
+    const TInt EDroppedAndNotLayouted = 3;
+    }
+
+namespace XnAdaptive
+    {
+    const TInt ENone = 0x00;
+    const TInt EWidth = 0x01;
+    const TInt EHeight = 0x02;
+    const TInt EMeasure = 0x04;
+    const TInt ESizeFixed = 0x08;
+    const TInt EIgnoreDirty = 0x10;
+    }
+
+namespace XnEventSource
+    {
+    const TInt EUnknown = 0x00;
+    const TInt EStylus = 0x01;
+    const TInt EKey = 0x02;
+    }
+
+namespace XnHoldProperty
+    {
+    const TInt ENoHold = 0x00;
+    const TInt EHold = 0x01;
+    }
+
+// Class declaration
+/**
+ * Node of the layout tree
+ *
+ * @ingroup group_xnlayoutengine
+ * @lib xnlayoutengine.lib
+ * @since Series 60 3.1
+ */
+NONSHARABLE_CLASS( CXnNode ) : public CBase
+    {
+public:
+    /**
+     * Two-phased constructor.
+     */
+    static CXnNode* NewL();
+
+    /**
+     * Destructor.
+     */
+    virtual ~CXnNode();
+
+public:
+    // New functions
+
+    /**
+     * Get the node implementation
+     *
+     * @since Series 60 3.1
+     * @return Node implementation
+     */
+    CXnNodeImpl* Impl();
+
+    /**
+     * Get the root node implementation
+     *
+     * @since Series 60 3.1
+     * @return Root node implementation
+     */
+    CXnNodeImpl* RootNodeImpl();
+
+    /**
+     * Get the view node implementation
+     *
+     * @since Series 60 3.1
+     * @return View node implementation
+     */
+    CXnViewNodeImpl* ViewNodeImpl();
+
+    /**
+     * Get the component node implementation
+     *
+     * @since Series 60 3.1
+     * @return Component node implementation
+     */
+    CXnComponentNodeImpl* ComponentNodeImpl();
+
+    /**
+     * Set UI engine
+     *
+     * @since Series 60 3.1
+     * @param aEngine UI engine
+     */
+    void SetUiEngine( CXnUiEngine& aEngine );
+
+    /**
+     * Get the UI engine
+     *
+     * @since Series 60 3.1
+     * @return UI engine
+     */
+    CXnUiEngine* UiEngine();
+
+    /**
+     * Set the node implementation
+     *
+     * @since Series 60 3.1
+     * @param aImpl Node implementation
+     */
+    void SetImpl( CXnNodeImpl* aImpl );
+
+    /**
+     * Set the Root node implementation
+     *
+     * @since Series 60 3.1
+     * @param aRootNodeImpl Root node implementation
+     */
+    void SetRootNodeImpl( CXnNodeImpl* aRootNodeImpl );
+
+    /**
+     * Set the views implementation
+     *
+     * @since Series 60 3.1
+     * @param aViewsNodeImpl Views node implementation
+     */
+    void SetViewsNodeImpl( CXnViewsNodeImpl* aViewsNodeImpl );
+
+    /**
+     * Set the view node implementation
+     *
+     * @since Series 60 3.1
+     * @param aViewNodeImpl View node implementation
+     */
+    void SetViewNodeImpl( CXnViewNodeImpl* aViewNodeImpl );
+
+    /**
+     * Handle interaction events
+     *
+     * @since Series 60 3.1
+     * @param aEventData Event data
+     * @param aSource A source of event, e.g. XnEventSource::EStylus.
+     * @return Flag indicating whether the event was consumed
+     */
+    TBool ReportXuikonEventL( CXnNode& aEventData, TInt aSource = 0 );
+
+    /**
+     * Handle key event
+     *
+     * @since Series 60 3.1
+     * @param aKeyEvent Key event data
+     * @param aType Event type
+     */
+    void OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+
+    /**
+     * Set the component node implementation
+     *
+     * @since Series 60 3.1
+     * @param aComponentNodeImpl Component node implementation
+     */
+    void SetComponentNodeImpl( CXnComponentNodeImpl* aComponentNodeImpl );
+
+    /**
+     * Set node's layout capability
+     *
+     * @since Series 60 3.1
+     * @param aLayoutCapable Layout capability
+     */
+    void SetLayoutCapable( const TBool aLayoutCapable );
+
+    /**
+     * Get node's layout capability
+     *
+     * @since Series 60 3.1
+     * @return Layout capability
+     */
+    TBool IsLayoutCapable() const;
+
+    /**
+     * Set the node's characted data
+     *
+     * @since Series 60 3.1
+     * @param aData Character data
+     */
+    void SetPCDataL( const TDesC8& aData );
+
+    /**
+     * Get the node's characted data
+     *
+     * @since Series 60 3.1
+     * @return Character data
+     */
+    const TDesC8& GetPCData() const;
+
+    /**
+     * Set a property.
+     *
+     * The list will assume ownership of the property.
+     * If an equal property is already in the list, it will be
+     * replaced with the new property and the old property will be destroyed.
+     * @since Series 60 3.1
+     * @param aProperty Property to set.
+     */
+    void SetPropertyL( CXnProperty* aProperty );
+
+    /**
+     * Set a property without notification being sent.
+     *
+     * @see SetPropertyL
+     * @param aProperty Property to set.
+     */
+    void SetPropertyWithoutNotificationL( CXnProperty* aProperty );
+
+    /**
+     * Set a property NOT replacing an equal property if already in the list.
+     *
+     * @see SetPropertyL
+     * @param aProperty Property to set.
+     */
+    void InitializePropertyL( CXnProperty* aProperty );
+
+    /**
+     * Set an array of properties.
+     *
+     * Improves the performance when many properties need to be
+     * set e.g. in construction phase.
+     * The list will assume ownership of the property.
+     * If an equal property is already in the list, it will be
+     * replaced with the new property and the old property will be destroyed.
+     * @see SetPropertyL
+     */
+    void SetPropertyArrayL( RPointerArray< CXnProperty >* aPropertyArray );
+
+    /**
+     * Gets a property.
+     *
+     * The list will retain ownership of the property,
+     * the caller must not destroy the property. The returned pointer will
+     * become invalid if the property is replaced in the list by a subsequent
+     * SetL().
+     * @since Series 60 3.1
+     * @param aKey Name of the property
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* GetPropertyL( const TDesC8& aKey ) const;
+
+    /**
+     * Set a state
+     *
+     * @since Series 60 3.1
+     * @param aState State to set.
+     * @param aSource A source of the event.
+     */
+    void SetStateL(
+        const TDesC8& aState,
+        TInt aSource = XnEventSource::EUnknown );        
+
+    /**
+     * Check whether a state is set
+     *
+     * @since Series 60 3.1
+     * @return ETrue if set, EFalse if not
+     */
+    TBool IsStateSet( const TDesC8& aState );
+
+    /**
+     * Set a state without performing notifications and re-rendering
+     *
+     * @since Series 60 3.1
+     * @param aState State to set
+     */
+    void SetStateWithoutNotificationL( const TDesC8& aState );
+
+    /**
+     * Unset a state
+     *
+     * @since Series 60 3.1
+     * @param aState State to unset.
+     */
+    void UnsetStateL( const TDesC8& aState );
+
+    /**
+     * Get node type
+     *
+     * @since Series 60 3.1
+     * @return Node type
+     */
+    CXnType* Type();
+
+    /**
+     * Set node's content rect
+     *
+     * @since Series 60 3.1
+     * @param aRect Content rect
+     */
+    void SetRect( const TRect& aRect );
+
+    /**
+     * Get node's content rect
+     *
+     * @since Series 60 3.1
+     * @return Content rect
+     */
+    TRect Rect();
+
+    /**
+     * Set node's border rect
+     *
+     * @since Series 60 3.1
+     * @param aRect Border rect
+     */
+    void SetBorderRect( const TRect& aRect );
+
+    /**
+     * Get node's border rect
+     *
+     * @since Series 60 3.1
+     * @return Border rect
+     */
+    TRect BorderRect();
+
+    /**
+     * Set normal flow border rect
+     *
+     * @since Series 60 3.1
+     * @param aRect border rect
+     */
+    void SetNormalFlowBorderRect( const TRect& aRect );
+
+    /**
+     * Get normal flow border rect
+     *
+     * @since Series 60 3.1
+     * @return Border rect
+     */
+    TRect NormalFlowBorderRect();
+
+    /**
+     * Set node's margin rect
+     *
+     * @since Series 60 3.1
+     * @param aRect Margin rect
+     */
+    void SetMarginRect( const TRect& aRect );
+
+    /**
+     * Get node's margin rect
+     *
+     * @since Series 60 3.1
+     * @return Margin rect
+     */
+    TRect MarginRect();
+
+    /**
+     * Set node's padding rect
+     *
+     * @since Series 60 3.1
+     * @param aRect Padding rect
+     */
+    void SetPaddingRect( const TRect& aRect );
+
+    /**
+     * Get node's padding rect
+     *
+     * @since Series 60 3.1
+     * @return Padding rect
+     */
+    TRect PaddingRect();
+
+    /**
+     * Returns the parent. The ownership is not transferred.
+     *
+     * @since Series 60 3.1
+     * @return The parent area, NULL if not set.
+     */
+    CXnNode* Parent() const;
+
+    /**
+     * Sets the parent.
+     *
+     * @since Series 60 3.1
+     * @param aParent Parent area
+     */
+    void SetParent( CXnNode& aParent );
+
+    /**
+     * Adds a child node under this node. Assumes ownership of the node.
+     *
+     * @since Series 60 3.1
+     * @param aChild Child to be added
+     * @exception KXnErrAddChildToAreaFailed Adding child failed.
+     */
+    void AddChildL( CXnNode* aChild );
+
+    /**
+     * Get the child nodes
+     *
+     * @since Series 60 3.1
+     * @return Child nodes
+     */
+    RPointerArray< CXnNode >& Children();
+
+    /**
+     * Set whether the node is dropped from layout
+     *
+     * @since Series 60 3.1
+     * @param aDropped Flag indicating whether the node is dropped from layout
+     */
+    void SetDropped( const TInt aDropped );
+
+    /**
+     * Get whether the node is dropped from layout
+     *
+     * @since Series 60 3.1
+     * @return Flag indicating whether the node is dropped from layout
+     */
+    TInt IsDropped() const;
+
+    /**
+     * Set node rendered, which means it will not be rendered again until
+     * its properties, states or rects change
+     *
+     * @since Series 60 3.1
+     */
+    void SetRenderedL();
+
+    /**
+     * Set node laid out, which means it will not be laid out again until
+     * its properties, states or rects change
+     *
+     * @since Series 60 3.1
+     */
+    void SetLaidOutL();
+
+    /**
+     * Get layout state
+     *
+     * @since Series 60 3.1
+     * @return Layout state
+     */
+    TBool IsLaidOut() const;
+
+    /**
+     * Set node not rendered and not laid out
+     *
+     * @since Series 60 3.1
+     */
+    void ClearRenderedAndLaidOut();
+
+    /**
+     * Get node plugin interface
+     *
+     * @since Series 60 3.1
+     * @return Node plugin interface
+     */
+    CXnNodePluginIf& PluginIfL();
+
+    /**
+     * Get node application interface
+     *
+     * @since Series 60 3.1
+     * @return Node application interface
+     */
+    CXnNodeAppIf& AppIfL();
+
+    /**
+     * Create a component interface according to the given type.
+     *
+     * @param aType Type of the interface to create
+     * @return Created interface or NULL if the provided type is not supported.
+     */
+    XnComponentInterface::MXnComponentInterface* MakeInterfaceL(
+        const TDesC8& aType );
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* WidthL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* HeightL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* MarginLeftL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* MarginRightL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BorderLeftL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BorderRightL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* PaddingLeftL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* PaddingRightL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* MarginTopL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* MarginBottomL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BorderTopL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BorderBottomL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* PaddingTopL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* PaddingBottomL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BorderWidthL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BlockProgressionL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* DirectionL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* PositionL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* MaxHeightL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* MinHeightL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* MaxWidthL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* MinWidthL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* DisplayL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* VisibilityL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* LeftL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* RightL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* TopL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BottomL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BorderLeftStyleL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BorderRightStyleL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BorderTopStyleL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BorderBottomStyleL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BorderStyleL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BorderImageL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* DisplayPriorityL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* NameL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* ValueL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* LabelL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* InitialFocusL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* ClassL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* IdL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* PathL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* MaskPathL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* NavIndexL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* VisibleRowsL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* GridColumnsL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* GridOrientationL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* GridVerDirectionL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* GridHorDirectionL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* FocusHorLoopingL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* FocusVerLoopingL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* ZIndexL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BackgroundColorL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* FocusBackgroundL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* BackgroundImageL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* RefL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* GridScrollBarMarginL();
+
+    /**
+     * Get property as indicated by method name.
+     *
+     * @see GetPropertyL
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* GridScrollBarWidthL();
+
+    /**
+     * Sets the pointer of DOM node
+     *
+     * @since S60 3.1
+     * @param aDomNode Corresponding DOM node
+     */
+    void SetDomNode( CXnDomNode* aDomNode );
+
+    /**
+     * Returns pointer to associated DOM node.
+     *
+     * @since S60 3.1
+     * @return Pointer to DOM node
+     */
+    CXnDomNode* DomNode();
+
+    /**
+     * Sets handle tooltip flag.
+     *
+     * @since S60 3.1
+     * @return Pointer to DOM node
+     */
+    void SetHandleTooltip( TBool aFlag );
+
+    /**
+     * Measures the adaptive content dimensions.
+     *
+     * @since Series 60 3.2
+     * @param aAvailableSize A size where adaptive content must fit
+     * @return the content dimensions
+     */
+    TSize MeasureAdaptiveContentL( const TSize& aAvailableSize );
+
+    /**
+     * Checks if the node has adaptive content.
+     *
+     * @since Series 60 3.2
+     * @return adaptive state (none, width/height or both)
+     */
+    TInt IsAdaptive( TBool aIgnoreSizeFixed = EFalse ) const;
+
+    /**
+     * Set node's content based state (none, width, height, or both).
+     *
+     * @since Series 60 3.2
+     * @param aAdaptive state (none, width/height or both)
+     */
+    void SetAdaptiveL( const TInt aAdaptive );
+
+    /**
+     * Set fixed size to adaptive node
+     *
+     * @since Series 60 3.2
+     * @param aFixedSize the node's size determined by layout algorithm
+     */
+    void FixAdaptiveSizeL( const TSize& aFixedSize );
+
+    /**
+     * Restarts the timer in a timed trigger.
+     *
+     * @param aDelay Delay in microseconds. If delay is zero, then the timer
+     *        is only cancelled.
+     */
+    void RestartTimedTrigger( TInt aDelay = 0 );
+
+    /**
+     * Sets default trigger delay.
+     *
+     * @param aDelay delay in microseconds. If new delay is not set, then
+     *        this value is used in restarting the timer.
+     */
+    void SetTriggerDelay( TTimeIntervalMicroSeconds32 aDelay );
+
+    /**
+     * Returns the default trigger delay.
+     */
+    TTimeIntervalMicroSeconds32 TriggerDelay();
+
+    /**
+     * Marks node as dirty, adds it to UiEngine's dirty list and
+     * clears rendered and laidout from the node and its children.
+     *
+     * @since S60 3.2
+     */
+    void SetDirtyL( TInt aLevel = XnDirtyLevel::ELayoutAndRender,
+        TBool aDisplayedState = EFalse );
+
+    /**
+     * Focuses first focusable node from the focus candidate array
+     */
+    TBool RunFocusChangeL( RPointerArray< CXnNode >& aFocusCandidates );
+
+    /**
+     * Change the order of the nodes. This is for drag and drop.
+     */
+    void ReorderNodesL( CXnNode* aSource, CXnNode* aTarget );
+
+    /**
+     * Loops through parents until a view node is found.
+     * If view is not found (or this node is a view), returns
+     * null.
+     */
+    CXnNode* FindViewNode();
+
+    /**
+     * Shows all tooltip nodes associated to this node
+     */
+    void ShowTooltipsL();
+
+    /**
+     * Hides all tooltip nodes associated to this node
+     */
+    void HideTooltipsL();
+
+    /**
+     * Gets namespace of node
+     */
+    const TDesC8& Namespace();
+
+    /**
+     * Gets control of node
+     */
+    CXnControlAdapter* Control() const;
+        
+    /**
+     * Sets scrollable control
+     */
+    void SetScrollableControl( CXnScrollableControlAdapter* aScrollableControl );
+
+    /**
+     * Gets scrollable control.
+     */
+    CXnScrollableControlAdapter* ScrollableControl();
+        
+protected:
+    /**
+     * C++ default constructor.
+     */
+    CXnNode();
+
+    /**
+     * Two-phased constructor.
+     */
+    void ConstructL();
+
+private:
+    // Data
+
+    /**
+     * Node implementation.
+     * Own.
+     */
+    CXnNodeImpl* iImpl;
+
+    /**
+     * Root node implementation.
+     * Not own (owned via iImpl).
+     */
+    CXnNodeImpl* iRootNodeImpl;
+
+    /**
+     * Views node implementation.
+     * Not own (owned via iImpl).
+     */
+    CXnViewsNodeImpl* iViewsNodeImpl;
+
+    /**
+     * View node implementation.
+     * Not own (owned via iImpl).
+     */
+    CXnViewNodeImpl* iViewNodeImpl;
+
+    /**
+     * Component node implementation.
+     * Not own (owned via iImpl).
+     */
+    CXnComponentNodeImpl* iComponentNodeImpl;
+
+    /**
+     * node plugin interface.
+     * Own.
+     */
+    CXnNodePluginIf* iPluginIf;
+
+    /**
+     * node application interface.
+     * Own.
+     */
+    CXnNodeAppIf* iAppIf;
+
+    /**
+     * delay in microseconds for timer.
+     */
+    TTimeIntervalMicroSeconds32 iTriggerDelay;
+    };
+
+#endif