idlehomescreen/inc/xnnodeimpl.h
changeset 0 f72a12da539e
child 15 ff572dfe6d86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/inc/xnnodeimpl.h	Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,1226 @@
+/*
+* 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:
+* Implementation part of the bridge pattern of  CXnNode
+*
+*/
+
+#ifndef XNNODEIMPL_H
+#define XNNODEIMPL_H
+
+// System includes
+#include <e32base.h>
+#include <w32std.h>
+
+// User includes
+#include "xndomproperty.h"
+#include "xnnode.h"
+
+// Forward declarations
+class CXnType;
+class CXnPropertyList;
+class CXnProperty;
+class CXnNode;
+class CXnUiEngine;
+class CGridPropertyCache;
+class CLayoutPropertyCache;
+class CXnDomNode;
+class CXnScrollableControlAdapter;
+
+namespace XnComponentInterface
+    {
+    class MXnComponentInterface;
+    }
+
+// Class declaration
+/**
+ * Implementation part of the bridge pattern in CXnNode.
+ *
+ * @ingroup group_xnlayoutengine
+ * @lib xnlayoutengine.lib
+ * @since Series 60 3.1
+ */
+NONSHARABLE_CLASS( CXnNodeImpl ) : public CBase
+    {
+public:
+    // Constructors and destructor
+
+    /**
+     * Two-phased constructor.
+     *
+     * @param aType Type.
+     */
+    static CXnNodeImpl* NewL( CXnType* aType );
+
+    /**
+     * Destructor.
+     */
+    virtual ~CXnNodeImpl();
+
+public:
+    // New functions
+
+    /**
+     * Sets wheter to handle tooltips
+     * @since S60 5.1
+     * @param aFlag ETrue to handle, EFalse otherwise
+     */
+    void SetHandleTooltip( TBool aFlag );
+
+    /**
+     * Hides all popups
+     * @since S60 5.1
+     */
+    void HidePopupsL();
+
+    /**
+     * Shows all popups
+     *
+     * @param aRect content rect
+     * @param aSource Event source
+     * @since S60 5.1
+     */
+    void ShowPopupsL( TRect aRect, TInt aSource = XnEventSource::EUnknown );
+
+    /**
+     * Set content rect
+     *
+     * @since Series 60 3.1
+     * @param aRect content rect
+     */
+    void SetRect( const TRect& aRect );
+
+    /**
+     * Get content rect
+     *
+     * @since Series 60 3.1
+     * @return Content rect
+     */
+    TRect Rect();
+
+    /**
+     * Set border rect
+     *
+     * @since Series 60 3.1
+     * @param aRect border rect
+     */
+    void SetBorderRect( const TRect& aRect );
+
+    /**
+     * Get 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 margin rect
+     *
+     * @since Series 60 3.1
+     * @param aRect margin rect
+     */
+    void SetMarginRect( const TRect& aRect );
+
+    /**
+     * Get margin rect
+     *
+     * @since Series 60 3.1
+     * @return Margin rect
+     */
+    TRect MarginRect();
+
+    /**
+     * Set padding rect
+     *
+     * @since Series 60 3.1
+     * @param aRect padding rect
+     */
+    void SetPaddingRect( const TRect& aRect );
+
+    /**
+     * Get padding rect
+     *
+     * @since Series 60 3.1
+     * @return Padding rect
+     */
+    TRect PaddingRect();
+
+    /**
+     * Set node
+     *
+     * @since Series 60 3.1
+     * @param aNode Node
+     */
+    void SetNode( CXnNode& aNode );
+
+    /**
+     * Get node
+     *
+     * @since Series 60 3.1
+     * @return Node
+     */
+    CXnNode* Node();
+
+    /**
+     * Set UI engine
+     *
+     * @since Series 60 3.1
+     * @param aEngine UI engine
+     */
+     void SetUiEngine( CXnUiEngine& aEngine );
+
+    /**
+     * Get UI engine
+     *
+     * @since Series 60 3.1
+     * @return UI engine
+     */
+    CXnUiEngine* UiEngine();
+
+    /**
+     * Handle interaction events
+     *
+     * @since Series 60 3.1
+     * @param aEventData Event data
+     * @param aSource A source of event, e.g. XnEventSource::EStylus.
+     */
+    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 character data
+     *
+     * @since Series 60 3.1
+     * @param aData Character data
+     */
+    void SetPCDataL( const TDesC8& aData );
+
+    /**
+     * Get character data
+     *
+     * @since Series 60 3.1
+     * @return Character data
+     */
+    const TDesC8& GetPCData();
+
+    /**
+     * 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.
+     * @param aNotify Boolean flag indicating whether notifications should be
+     *        sent
+     */
+    void SetPropertyL( CXnProperty* aProperty, TBool aNotify = ETrue );
+
+    /**
+     * 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 Property name
+     * @return The property mapped to the key or NULL if not found.
+     */
+    CXnProperty* GetPropertyL( const TDesC8& aKey );
+
+    /**
+     * Set a state
+     *
+     * @since Series 60 3.1
+     * @param aState State to set
+     * @param aSource A source that triggered this event     
+     */
+    void SetStateL( const TDesC8& aState, TInt aSource );
+
+    /**
+     * 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();
+
+    /**
+     * 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. 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 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 layout capability
+     *
+     * @since Series 60 3.1
+     * @param aLayoutCapable Layout capability
+     */
+    void SetLayoutCapable( const TBool aLayoutCapable );
+
+    /**
+     * Get layout capability
+     *
+     * @since Series 60 3.1
+     * @return Layout capability
+     */
+    TBool IsLayoutCapable() 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();
+
+    /**
+     * Create a component interface according to the given type.
+     *
+     * This must be virtual because CXnComponentNodeImpl inherits this.
+     * @param aType Type of the interface to create
+     * @return Created interface or NULL if the provided type is not supported.
+     */
+    virtual 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();
+
+    /**
+     * 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 );
+
+    /**
+     * Callback which will be called by the CPeriodic.
+     *
+     * @param aPtr User defined pointer.
+     * @return ETrue if the method should be called again.
+     */
+    static TInt PeriodicEventL( TAny* aPtr );
+
+    /**
+     * Returns a pointer to the periodic timer (for timed triggers).
+     */
+    CPeriodic* PeriodicTimer();
+
+    /**
+     * Creates a periodic timer (iPeriodicTimer).
+     */
+    void CreatePeriodicL();
+
+    /**
+     * Deletes a periodict timer (iPeriodicTimer)
+     */
+    void DeletePeriodic();
+
+    /**
+     * 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 );
+
+    /**
+     * Find next node located aDirection from aNode.
+     */
+    CXnNode* FindNextNodeL(
+        RPointerArray< CXnNode >& aArray,
+        CXnNode& aNode,
+        TInt aDirection );
+
+    /**
+     * Gets namespace of node
+     */
+    const TDesC8& Namespace();
+
+    /**
+     * Sets scrollable control
+     */
+    void SetScrollableControl( CXnScrollableControlAdapter* aScrollableControl );
+
+    /**
+     * Gets scrollable control.
+     */
+    CXnScrollableControlAdapter* ScrollableControl();
+        
+private:
+
+    TInt DoSetPropertyL( CXnProperty* aPropery );
+    TRect AdjustRectIfNeeded( TRect aRect );
+
+protected:
+    /**
+     * C++ default constructor.
+     */
+    CXnNodeImpl();
+
+    /**
+     * Two-phased constructor.
+     */
+    void ConstructL( CXnType* aType );
+
+private:
+    // Data
+
+    /**
+     * Component type.
+     * Own.
+     */
+    CXnType* iType;
+
+    /**
+     * Pointer to property list.
+     * Own.
+     */
+    CXnPropertyList* iPropertyList;
+
+    /**
+     * Pointer to parent node.
+     * Not own.
+     */
+    CXnNode* iParent;
+
+    /**
+     * Pointer to node.
+     * Not own.
+     */
+    CXnNode* iNode;
+
+    /**
+     * Content rect.
+     */
+    TRect iRect;
+
+    /**
+     * Border rect.
+     */
+    TRect iBorderRect;
+
+    /**
+     * Border rect according to normal flow
+     */
+    TRect iNormalFlowBorderRect;
+
+    /**
+     * Margin rect
+     */
+    TRect iMarginRect;
+
+    /**
+     * Padding rect
+     */
+    TRect iPaddingRect;
+
+    /**
+     * Is node dropped from layout
+     */
+    TInt iDropped;
+
+    /**
+     * Does node support layout
+     */
+    TBool iLayoutCapable;
+
+    /**
+     * Children of this node
+     */
+    RPointerArray< CXnNode > iChildren;
+
+    /**
+     * UI engine.
+     * Not own.
+     */
+    CXnUiEngine* iUiEngine;
+
+    /**
+     * Flag indicating render status
+     */
+    TBool iRendered;
+
+    /**
+     * Flag indicating layout status
+     */
+    TBool iLaidOut;
+
+    /**
+     * Array containing list of pseudo classes that have class-specific properties
+     */
+    RArray< CXnDomProperty::TPseudoClass > iPropertyPseudoClasses;
+
+    /**
+     * Array containing list of pseudo classes that have a state set
+     *
+     * @see SetStateL
+     */
+    RArray< CXnDomProperty::TPseudoClass > iStates;
+
+    /**
+     * Local cache for property with name KRef.
+     * Not own.
+     */
+    CXnProperty* iRef;
+
+    /**
+     * Local cache for property with name KName.
+     * Not own.
+     */
+    CXnProperty* iName;
+
+    /**
+     * Local cache for property with name KValue.
+     * Not own.
+     */
+    CXnProperty* iValue;
+
+    /**
+     * Local cache for property with name KLabel.
+     * Not own.
+     */
+    CXnProperty* iLabel;
+
+    /**
+     * Local cache for property with name KInitialFocus.
+     * Not own.
+     */
+    CXnProperty* iInitialFocus;
+
+    /**
+     * Local cache for property with name KClass.
+     * Not own.
+     */
+    CXnProperty* iClass;
+
+    /**
+     * Local cache for property with name KId.
+     * Not own.
+     */
+    CXnProperty* iId;
+
+    /**
+     * Local cache for property with name KPath.
+     * Not own.
+     */
+    CXnProperty* iPath;
+
+    /**
+     * Local cache for property with name KMaskPath.
+     * Not own.
+     */
+    CXnProperty* iMaskPath;
+
+    /**
+     * Local property cache.
+     * Own.
+     */
+    CGridPropertyCache* iGridPropertyCache;
+
+    /**
+     * Local property cache.
+     * Own.
+     */
+    CLayoutPropertyCache* iLayoutPropertyCache;
+
+    /**
+     * Flag indicating tooltip handling status
+     */
+    TBool iHandleTooltip;
+
+    /**
+     * Pointer to corresponding node in the DOM tree.
+     * Not own.
+     */
+    CXnDomNode* iDomNode;
+
+    /**
+     * Pointer to scrollable control adapter
+     * Not own.
+     */
+    CXnScrollableControlAdapter* iScrollableControl;
+    
+    /**    
+     * States, if the nodes width, height or both are content based.
+     */
+    TInt iAdaptive;
+
+    /**
+     * The timer for the timed triggers.
+     * Own.
+     */
+    CPeriodic* iPeriodicTimer;
+    };
+
+#endif