idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp
branchRCL_3
changeset 11 ff572dfe6d86
parent 9 f966699dea19
child 12 9674c1a575e9
equal deleted inserted replaced
9:f966699dea19 11:ff572dfe6d86
    52 #include "xnviewadapter.h"
    52 #include "xnviewadapter.h"
    53 #include "xnbackgroundmanager.h"
    53 #include "xnbackgroundmanager.h"
    54 #include "xntexteditor.h"
    54 #include "xntexteditor.h"
    55 
    55 
    56 // Local constants
    56 // Local constants
    57 _LIT8( KRef, "ref" );
       
    58 _LIT8( KId, "id" );
    57 _LIT8( KId, "id" );
    59 _LIT8( KName, "name" );
    58 _LIT8( KName, "name" );
    60 _LIT8( KToolTip, "tooltip" );
    59 _LIT8( KToolTip, "tooltip" );
    61 _LIT8( KMenuBar, "menubar" );
    60 _LIT8( KMenuBar, "menubar" );
    62 _LIT8( KTextEditor, "texteditor" );
    61 _LIT8( KTextEditor, "texteditor" );
    63 
    62 
    64 _LIT8( KActionsHandler, "actionshandler" );
    63 _LIT8( KActionsHandler, "actionshandler" );
    65 
    64 
    66 const TReal KS60ScrollbarDefaultWidth = 1.5;
       
    67 const TReal KS60ScrollbarDefaultMargin = 0.25;
       
    68 const TReal KS60ScrollbarDefaultWidthPenEnabled = 3;
       
    69 const TReal KS60ScrollbarDefaultMarginPenEnabled = 0.5;
       
    70 const TInt KUnitMaxLen = 2;
    65 const TInt KUnitMaxLen = 2;
    71 const TInt KOneView = 1;
    66 const TInt KOneView = 1;
    72 
    67 
    73 _LIT8( KPseudoClassFocus, "focus" );
    68 _LIT8( KPseudoClassFocus, "focus" );
    74 _LIT8( KPseudoClassPressedDown, "presseddown" );
    69 _LIT8( KPseudoClassPressedDown, "presseddown" );
    85 _LIT8( KDisplay, "display" );
    80 _LIT8( KDisplay, "display" );
    86 _LIT8( KBlock, "block" );
    81 _LIT8( KBlock, "block" );
    87 _LIT8( KNone, "none" );
    82 _LIT8( KNone, "none" );
    88 _LIT8( KGainEnd, "gainend" );
    83 _LIT8( KGainEnd, "gainend" );
    89 _LIT8( KLoseEnd, "loseend" );
    84 _LIT8( KLoseEnd, "loseend" );
    90 
       
    91 // Local classes
       
    92 struct TXnTimedTrigger
       
    93     {
       
    94     CXnNodeImpl* iNodeImpl;
       
    95     CXnUiEngine* iEngine;
       
    96     CXnNode* iNode;
       
    97     CXnNode* iEventData;
       
    98     CXnDomNode* iActionNode;
       
    99     CXnDomNode* iTriggerNode;
       
   100     };
       
   101 
       
   102 struct CGridPropertyCache : public CBase
       
   103     {
       
   104     CXnProperty* iVisibleRows;
       
   105     CXnProperty* iGridColumns;
       
   106     CXnProperty* iGridOrientation;
       
   107     CXnProperty* iGridVerDirection;
       
   108     CXnProperty* iGridHorDirection;
       
   109     CXnProperty* iFocusHorLooping;
       
   110     CXnProperty* iFocusVerLooping;
       
   111     CXnProperty* iGridScrollBarWidth;
       
   112     CXnProperty* iGridScrollBarMargin;
       
   113     };
       
   114 
    85 
   115 struct CLayoutPropertyCache : public CBase
    86 struct CLayoutPropertyCache : public CBase
   116     {
    87     {
   117     CLayoutPropertyCache() :
    88     CLayoutPropertyCache() :
   118         iWidths( 1 ),
    89         iWidths( 1 ),
   280     RPointerArray< CXnProperty > iFocusBackgrounds;
   251     RPointerArray< CXnProperty > iFocusBackgrounds;
   281     };
   252     };
   282 
   253 
   283 // Local function prototypes
   254 // Local function prototypes
   284 static TBool IsTriggerRunnableL( CXnDomNode& aTriggerNode );
   255 static TBool IsTriggerRunnableL( CXnDomNode& aTriggerNode );
   285 static CXnNode* RefNodeL(
       
   286     CXnNodeImpl* aThis, CXnProperty* aRef, CXnUiEngine* aUiEngine );
       
   287 static const TDesC8* CheckRefAttributeL( CXnProperty* aRef );
       
   288 static TBool DoMatchTriggerForKeyEventL(
   256 static TBool DoMatchTriggerForKeyEventL(
   289     const TKeyEvent& aKeyEvent,
   257     const TKeyEvent& aKeyEvent,
   290     TEventCode aType,
   258     TEventCode aType,
   291     CXnDomNode& aTriggerNode );
   259     CXnDomNode& aTriggerNode );
   292 static void GetFocusCandidatesL(
   260 static void GetFocusCandidatesL(
   293     CXnNodeImpl* aThis, CXnUiEngine& aEngine, CXnDomNode& aEventNode,
   261     CXnNodeImpl* aThis, CXnUiEngine& aEngine, CXnDomNode& aEventNode,
   294     RPointerArray< CXnNode >& aFocusCandidates );
   262     RPointerArray< CXnNode >& aFocusCandidates );
   295 static void RunAppUiNotificationL( CXnUiEngine& aEngine, CXnNode& aNode,
   263 static void RunAppUiNotificationL( CXnUiEngine& aEngine, CXnNode& aNode,
   296     CXnDomNode& aEventNode, CXnDomNode& aTriggerNode, CXnNode& aEventData );
   264     CXnDomNode& aEventNode, CXnDomNode& aTriggerNode, CXnNode& aEventData );
   297 static void RunAppExit( CXnUiEngine& aEngine );
       
   298 static void RunFullScreenEffectL(
   265 static void RunFullScreenEffectL(
   299     CXnUiEngine& aEngine, CXnDomNode& aEventNode );
   266     CXnUiEngine& aEngine, CXnDomNode& aEventNode );
   300 static void RunActivateViewL(
   267 static void RunActivateViewL(
   301     CXnNodeImpl* aThis, CXnUiEngine& aEngine, CXnDomNode& aEventNode );
   268     CXnNodeImpl* aThis, CXnUiEngine& aEngine, CXnDomNode& aEventNode );
   302 static void RunActivateNextViewL( CXnUiEngine& aEngine, CXnDomNode& aEventNode );
   269 static void RunActivateNextViewL( CXnUiEngine& aEngine, CXnDomNode& aEventNode );
   336     CXnNodeImpl* aThis, CXnNode& aNode, CXnUiEngine& aEngine,
   303     CXnNodeImpl* aThis, CXnNode& aNode, CXnUiEngine& aEngine,
   337     CXnDomNode& aEventNode );
   304     CXnDomNode& aEventNode );
   338 static void RunTryDisplayingListQueryDialogL(
   305 static void RunTryDisplayingListQueryDialogL(
   339     CXnNodeImpl* aThis, CXnUiEngine& aEngine, CXnDomNode& aEventNode );
   306     CXnNodeImpl* aThis, CXnUiEngine& aEngine, CXnDomNode& aEventNode );
   340 static void RunSetInitialFocusL( CXnUiEngine& aEngine );
   307 static void RunSetInitialFocusL( CXnUiEngine& aEngine );
   341 static void ResolveTriggerDelayL(
       
   342     CXnUiEngine& aEngine, CXnDomNode& aNode, TInt& aDelay );
       
   343 static TBool RunEventL(
   308 static TBool RunEventL(
   344     CXnNodeImpl* aThis, CXnUiEngine& aEngine, CXnNode& aNode,
   309     CXnNodeImpl* aThis, CXnUiEngine& aEngine, CXnNode& aNode,
   345     CXnDomNode& aEventNode, CXnDomNode& aTriggerNode, CXnNode& aEventData );
   310     CXnDomNode& aEventNode, CXnDomNode& aTriggerNode, CXnNode& aEventData );
   346 static void RunEventsL( CXnNodeImpl* aThis, CXnUiEngine& aEngine, CXnNode& aNode,
   311 static void RunEventsL( CXnNodeImpl* aThis, CXnUiEngine& aEngine, CXnNode& aNode,
   347     CXnDomNode& aActionNode, CXnDomNode& aTriggerNode, CXnNode& aEventData );
   312     CXnDomNode& aActionNode, CXnDomNode& aTriggerNode, CXnNode& aEventData );
  1378 // -----------------------------------------------------------------------------
  1343 // -----------------------------------------------------------------------------
  1379 //
  1344 //
  1380 static void SetCachedProperty(
  1345 static void SetCachedProperty(
  1381     CXnProperty* aProperty,
  1346     CXnProperty* aProperty,
  1382     CLayoutPropertyCache*& aLayoutPropertyCache,
  1347     CLayoutPropertyCache*& aLayoutPropertyCache,
  1383     CXnProperty*& aRef,
       
  1384     CXnProperty*& aName,
  1348     CXnProperty*& aName,
  1385     CXnProperty*& aValue,
  1349     CXnProperty*& aValue,
  1386     CXnProperty*& aLabel,
  1350     CXnProperty*& aLabel,
  1387     CXnProperty*& aInitialFocus,
  1351     CXnProperty*& aInitialFocus,
  1388     CXnProperty*& aClass,
  1352     CXnProperty*& aClass,
  1389     CXnProperty*& aId,
  1353     CXnProperty*& aId,
  1390     CXnProperty*& aPath,
  1354     CXnProperty*& aPath,
  1391     CXnProperty*& aMaskPath,
  1355     CXnProperty*& aMaskPath,
  1392     CGridPropertyCache*& aGridPropertyCache,
       
  1393     TBool aInitializing,
  1356     TBool aInitializing,
  1394     TBool aArrayOnly)
  1357     TBool aArrayOnly)
  1395     {
  1358     {
  1396     const TDesC8& name = aProperty->Property()->Name();
  1359     const TDesC8& name = aProperty->Property()->Name();
  1397     if ( !AllocateLayoutCache( aLayoutPropertyCache ) )
  1360     if ( !AllocateLayoutCache( aLayoutPropertyCache ) )
  1480         }
  1443         }
  1481     else if ( name == XnPropertyNames::image::KMaskPath )
  1444     else if ( name == XnPropertyNames::image::KMaskPath )
  1482         {
  1445         {
  1483         aMaskPath = aProperty;
  1446         aMaskPath = aProperty;
  1484         }
  1447         }
  1485     else if ( name == KRef )
       
  1486         {
       
  1487         aRef = aProperty;
       
  1488         }
       
  1489     else if ( name == XnPropertyNames::style::common::KMarginLeft )
  1448     else if ( name == XnPropertyNames::style::common::KMarginLeft )
  1490         {
  1449         {
  1491         DoSetCachedProperty(
  1450         DoSetCachedProperty(
  1492             aProperty,
  1451             aProperty,
  1493             aLayoutPropertyCache->iMarginLeft,
  1452             aLayoutPropertyCache->iMarginLeft,
  1747         DoSetCachedProperty(
  1706         DoSetCachedProperty(
  1748             aProperty,
  1707             aProperty,
  1749             aLayoutPropertyCache->iNavIndex,
  1708             aLayoutPropertyCache->iNavIndex,
  1750             aLayoutPropertyCache->iNavIndexes,
  1709             aLayoutPropertyCache->iNavIndexes,
  1751             aInitializing, aArrayOnly );
  1710             aInitializing, aArrayOnly );
  1752         }
       
  1753     else if ( name == XnPropertyNames::grid::KS60VisibleRows )
       
  1754         {
       
  1755         if ( !aGridPropertyCache )
       
  1756             {
       
  1757             aGridPropertyCache = new CGridPropertyCache;
       
  1758             }
       
  1759         if ( aGridPropertyCache )
       
  1760             {
       
  1761             aGridPropertyCache->iVisibleRows = aProperty;
       
  1762             }
       
  1763         }
       
  1764     else if ( name == XnPropertyNames::grid::KS60GridColumns )
       
  1765         {
       
  1766         if ( !aGridPropertyCache )
       
  1767             {
       
  1768             aGridPropertyCache = new CGridPropertyCache;
       
  1769             }
       
  1770         if ( aGridPropertyCache )
       
  1771             {
       
  1772             aGridPropertyCache->iGridColumns = aProperty;
       
  1773             }
       
  1774         }
       
  1775     else if ( name == XnPropertyNames::grid::KS60GridOrientation )
       
  1776         {
       
  1777         if ( !aGridPropertyCache )
       
  1778             {
       
  1779             aGridPropertyCache = new CGridPropertyCache;
       
  1780             }
       
  1781         if ( aGridPropertyCache )
       
  1782             {
       
  1783             aGridPropertyCache->iGridOrientation = aProperty;
       
  1784             }
       
  1785         }
       
  1786     else if ( name == XnPropertyNames::grid::KS60GridVerDirection )
       
  1787         {
       
  1788         if ( !aGridPropertyCache )
       
  1789             {
       
  1790             aGridPropertyCache = new CGridPropertyCache;
       
  1791             }
       
  1792         if ( aGridPropertyCache )
       
  1793             {
       
  1794             aGridPropertyCache->iGridVerDirection = aProperty;
       
  1795             }
       
  1796         }
       
  1797     else if ( name == XnPropertyNames::grid::KS60GridHorDirection )
       
  1798         {
       
  1799         if ( !aGridPropertyCache )
       
  1800             {
       
  1801             aGridPropertyCache = new CGridPropertyCache;
       
  1802             }
       
  1803         if ( aGridPropertyCache )
       
  1804             {
       
  1805             aGridPropertyCache->iGridHorDirection = aProperty;
       
  1806             }
       
  1807         }
       
  1808     else if ( name == XnPropertyNames::grid::KS60FocusHorLooping )
       
  1809         {
       
  1810         if ( !aGridPropertyCache )
       
  1811             {
       
  1812             aGridPropertyCache = new CGridPropertyCache;
       
  1813             }
       
  1814         if ( aGridPropertyCache )
       
  1815             {
       
  1816             aGridPropertyCache->iFocusHorLooping = aProperty;
       
  1817             }
       
  1818         }
       
  1819     else if ( name == XnPropertyNames::grid::KS60FocusVerLooping )
       
  1820         {
       
  1821         if ( !aGridPropertyCache )
       
  1822             {
       
  1823             aGridPropertyCache = new CGridPropertyCache;
       
  1824             }
       
  1825         if ( aGridPropertyCache )
       
  1826             {
       
  1827             aGridPropertyCache->iFocusVerLooping = aProperty;
       
  1828             }
       
  1829         }
       
  1830     else if ( name == XnPropertyNames::grid::KS60GridScrollbarWidth )
       
  1831         {
       
  1832         if ( !aGridPropertyCache )
       
  1833             {
       
  1834             aGridPropertyCache = new CGridPropertyCache;
       
  1835             }
       
  1836         if ( aGridPropertyCache )
       
  1837             {
       
  1838             aGridPropertyCache->iGridScrollBarWidth = aProperty;
       
  1839             }
       
  1840         }
       
  1841     else if ( name == XnPropertyNames::grid::KS60GridScrollbarMargin )
       
  1842         {
       
  1843         if ( !aGridPropertyCache )
       
  1844             {
       
  1845             aGridPropertyCache = new CGridPropertyCache;
       
  1846             }
       
  1847         if ( aGridPropertyCache )
       
  1848             {
       
  1849             aGridPropertyCache->iGridScrollBarMargin = aProperty;
       
  1850             }
       
  1851         }
  1711         }
  1852     }
  1712     }
  1853 
  1713 
  1854 // -----------------------------------------------------------------------------
  1714 // -----------------------------------------------------------------------------
  1855 // ReplaceOrAppend()
  1715 // ReplaceOrAppend()
  2313             return KNullDesC8;
  2173             return KNullDesC8;
  2314         }
  2174         }
  2315     }
  2175     }
  2316 
  2176 
  2317 // -----------------------------------------------------------------------------
  2177 // -----------------------------------------------------------------------------
  2318 // CheckRefAttributeL
       
  2319 // -----------------------------------------------------------------------------
       
  2320 //
       
  2321 static const TDesC8* CheckRefAttributeL( CXnProperty* aRef )
       
  2322     {
       
  2323     if ( !aRef )
       
  2324         {
       
  2325         return NULL;
       
  2326         }
       
  2327 
       
  2328     return &aRef->StringValue();
       
  2329     }
       
  2330 
       
  2331 // -----------------------------------------------------------------------------
       
  2332 // DoMatchTriggerForKeyEventL
  2178 // DoMatchTriggerForKeyEventL
  2333 // -----------------------------------------------------------------------------
  2179 // -----------------------------------------------------------------------------
  2334 //
  2180 //
  2335 static TBool DoMatchTriggerForKeyEventL(
  2181 static TBool DoMatchTriggerForKeyEventL(
  2336     const TKeyEvent& aKeyEvent, TEventCode aType,
  2182     const TKeyEvent& aKeyEvent, TEventCode aType,
  2469         }
  2315         }
  2470     return EFalse;
  2316     return EFalse;
  2471     }
  2317     }
  2472 
  2318 
  2473 // -----------------------------------------------------------------------------
  2319 // -----------------------------------------------------------------------------
  2474 // MatchTimedTriggerPropertiesL
       
  2475 // -----------------------------------------------------------------------------
       
  2476 //
       
  2477 static TBool MatchTimedTriggerPropertiesL( CXnDomNode& aTriggerNode )
       
  2478     {
       
  2479     CXnDomList& children = aTriggerNode.ChildNodes();
       
  2480     TInt count = children.Length();
       
  2481     if ( count > 0 )
       
  2482         {
       
  2483         for ( TInt i = 0; i < count; ++i )
       
  2484             {
       
  2485             CXnDomNode* child = static_cast< CXnDomNode* >( children.Item( i ) );
       
  2486             const TDesC8& name = child->AttributeValue( XnPropertyNames::action::KName );
       
  2487             if ( name == XnPropertyNames::action::trigger::KDelay )
       
  2488                 {
       
  2489                 return ETrue;
       
  2490                 }
       
  2491             }
       
  2492         }
       
  2493     return EFalse;
       
  2494     }
       
  2495 
       
  2496 // -----------------------------------------------------------------------------
       
  2497 // MatchStylusTriggerL
       
  2498 // -----------------------------------------------------------------------------
       
  2499 //
       
  2500 static TBool MatchStylusTriggerL(
       
  2501     CXnNode& aMatchingTriggerNode,
       
  2502     CXnDomNode& aTreeTriggerNode )
       
  2503     {
       
  2504     TInt ret( EFalse );
       
  2505 
       
  2506     CXnDomList& treeChildren = aTreeTriggerNode.ChildNodes();
       
  2507     TInt treeCount = treeChildren.Length();
       
  2508 
       
  2509     RPointerArray< CXnNode >& matchingChildren = aMatchingTriggerNode.Children();
       
  2510     TInt matchCount = matchingChildren.Count();
       
  2511 
       
  2512     if ( treeCount == 0 )
       
  2513         {
       
  2514         // If stylus-trigger does not have properties, trigger is run with stylus up.
       
  2515         for ( TInt i = 0; i < matchCount; ++i )
       
  2516             {
       
  2517             CXnNode* node = matchingChildren[i];
       
  2518             CXnProperty* nameProperty = node->NameL();
       
  2519             if ( nameProperty )
       
  2520                 {
       
  2521                 const TDesC8& name = nameProperty->StringValue();
       
  2522                 if ( name ==
       
  2523                      XnPropertyNames::action::trigger::name::stylus::KStylusEventType )
       
  2524                     {
       
  2525                     CXnProperty* valueProperty = node->ValueL();
       
  2526                     if ( valueProperty )
       
  2527                         {
       
  2528                         const TDesC8& name = valueProperty->StringValue();
       
  2529                         if ( name == XnPropertyNames::action::trigger::name::KDownAndUp )
       
  2530                             {
       
  2531                             return ETrue;
       
  2532                             }
       
  2533                         }
       
  2534                     }
       
  2535                 }
       
  2536             }
       
  2537         return EFalse;
       
  2538         }
       
  2539 
       
  2540     // Fetch trigger data defined in the theme
       
  2541     TInt treeTriggerState( 1 );
       
  2542     HBufC8* treeTriggerType( NULL );
       
  2543     for ( TInt i = 0; i < treeCount; ++i )
       
  2544         {
       
  2545         CXnDomNode* domNode = static_cast< CXnDomNode* >( treeChildren.Item( i ) );
       
  2546         CXnDomList& attrs = domNode->AttributeList();
       
  2547         CXnDomAttribute* nameAttribute = static_cast< CXnDomAttribute* >(
       
  2548             attrs.FindByName( XnPropertyNames::action::KName ) );
       
  2549         CXnDomAttribute* valueAttribute = static_cast< CXnDomAttribute* >(
       
  2550             attrs.FindByName( XnPropertyNames::action::KValue ) );
       
  2551         if ( !nameAttribute || !valueAttribute )
       
  2552             {
       
  2553             continue;
       
  2554             }
       
  2555         if ( nameAttribute->Value() ==
       
  2556              XnPropertyNames::action::trigger::name::stylus::KStylusState )
       
  2557             {
       
  2558             TLex8 lex( valueAttribute->Value() );
       
  2559             lex.Val( treeTriggerState );
       
  2560             }
       
  2561         else if ( nameAttribute->Value() ==
       
  2562                   XnPropertyNames::action::trigger::name::stylus::KStylusEventType )
       
  2563             {
       
  2564             // just in case
       
  2565             if ( treeTriggerType )
       
  2566                 {
       
  2567                 CleanupStack::PopAndDestroy( treeTriggerType );
       
  2568                 treeTriggerType = NULL;
       
  2569                 }
       
  2570             const TDesC8& value = valueAttribute->Value();
       
  2571             treeTriggerType = HBufC8::NewL( value.Length() );
       
  2572             TPtr8 ptr = treeTriggerType->Des();
       
  2573             ptr = value;
       
  2574             CleanupStack::PushL( treeTriggerType );
       
  2575             }
       
  2576         }
       
  2577 
       
  2578     // If not defined, use the default value 'up'
       
  2579     if ( !treeTriggerType )
       
  2580         {
       
  2581         treeTriggerType = HBufC8::NewL( 10 );
       
  2582         TPtr8 ptr = treeTriggerType->Des();
       
  2583         ptr.Append( XnPropertyNames::action::trigger::name::KDownAndUp );
       
  2584         CleanupStack::PushL( treeTriggerType );
       
  2585         }
       
  2586 
       
  2587     // Fetch matching trigger data.
       
  2588     TInt matchTriggerState( 1 );
       
  2589     HBufC8* matchTriggerType( NULL );
       
  2590     for ( TInt i = 0; i < matchCount; ++i )
       
  2591         {
       
  2592         CXnNode* matchNode = matchingChildren[i];
       
  2593         CXnProperty* nameProperty = matchNode->NameL();
       
  2594         CXnProperty* valueProperty = matchNode->ValueL();
       
  2595         if ( nameProperty && valueProperty )
       
  2596             {
       
  2597             if ( nameProperty->StringValue() ==
       
  2598                  XnPropertyNames::action::trigger::name::stylus::KStylusState )
       
  2599                 {
       
  2600                 TLex8 lex( valueProperty->StringValue() );
       
  2601                 lex.Val( matchTriggerState );
       
  2602                 }
       
  2603             else if ( nameProperty->StringValue() ==
       
  2604                       XnPropertyNames::action::trigger::name::stylus::KStylusEventType )
       
  2605                 {
       
  2606                 // just in case
       
  2607                 if ( matchTriggerType )
       
  2608                     {
       
  2609                     CleanupStack::PopAndDestroy( matchTriggerType );
       
  2610                     matchTriggerType = NULL;
       
  2611                     }
       
  2612                 const TDesC8& value = valueProperty->StringValue();
       
  2613                 matchTriggerType = HBufC8::NewL( value.Length() );
       
  2614                 TPtr8 ptr = matchTriggerType->Des();
       
  2615                 ptr = value;
       
  2616                 CleanupStack::PushL( matchTriggerType );
       
  2617                 }
       
  2618             }
       
  2619         }
       
  2620 
       
  2621     if ( treeTriggerState == matchTriggerState )
       
  2622         {
       
  2623         // just in case
       
  2624         if ( !matchTriggerType )
       
  2625             {
       
  2626             ret = EFalse;
       
  2627             }
       
  2628         else if ( treeTriggerType->Des() == matchTriggerType->Des() )
       
  2629             {
       
  2630             ret = ETrue;
       
  2631             }
       
  2632         // still, if trigger type is 'KUp' it should match to 'KDownAndUp' event
       
  2633         else if ( treeTriggerType->Des() ==
       
  2634                   XnPropertyNames::action::trigger::name::KUp )
       
  2635             {
       
  2636             if ( matchTriggerType->Des() ==
       
  2637                  XnPropertyNames::action::trigger::name::KDownAndUp )
       
  2638                 {
       
  2639                 ret = ETrue;
       
  2640                 }
       
  2641             }
       
  2642         }
       
  2643     if ( matchTriggerType )
       
  2644         {
       
  2645         CleanupStack::PopAndDestroy( matchTriggerType );
       
  2646         }
       
  2647     if ( treeTriggerType )
       
  2648         {
       
  2649         CleanupStack::PopAndDestroy( treeTriggerType );
       
  2650         }
       
  2651     return ret;
       
  2652     }
       
  2653 
       
  2654 // -----------------------------------------------------------------------------
       
  2655 // MatchActivateTriggerPropertiesL
  2320 // MatchActivateTriggerPropertiesL
  2656 // Checks if triggered node properties match
  2321 // Checks if triggered node properties match
  2657 // ones defined in theme
  2322 // ones defined in theme
  2658 // -----------------------------------------------------------------------------
  2323 // -----------------------------------------------------------------------------
  2659 //
  2324 //
  2747     CXnDomNode& aTriggerNode )
  2412     CXnDomNode& aTriggerNode )
  2748     {
  2413     {
  2749     CXnDomList& attributeList( aTriggerNode.AttributeList() );
  2414     CXnDomList& attributeList( aTriggerNode.AttributeList() );
  2750 
  2415 
  2751     const TDesC8& reason(
  2416     const TDesC8& reason(
  2752         XnPropertyNames::action::trigger::name::uidefinitionmodification::KReason );
  2417         XnPropertyNames::action::trigger::name::orientation::KReason );
  2753 
  2418 
  2754     CXnDomAttribute* attribute( static_cast< CXnDomAttribute* >
  2419     CXnDomAttribute* attribute( static_cast< CXnDomAttribute* >
  2755         ( attributeList.FindByName( reason ) ) );
  2420         ( attributeList.FindByName( reason ) ) );
  2756 
  2421 
  2757     if ( !attribute )
  2422     if ( !attribute )
  2761         }
  2426         }
  2762 
  2427 
  2763     const TDesC8& value( attribute->Value() );
  2428     const TDesC8& value( attribute->Value() );
  2764 
  2429 
  2765     if ( value ==
  2430     if ( value ==
  2766          XnPropertyNames::action::trigger::name::uidefinitionmodification::reason::KLandscape ||
  2431          XnPropertyNames::action::trigger::name::orientation::reason::KLandscape ||
  2767          value ==
  2432          value ==
  2768          XnPropertyNames::action::trigger::name::uidefinitionmodification::reason::KPortrait )
  2433          XnPropertyNames::action::trigger::name::orientation::reason::KPortrait )
  2769         {
  2434         {
  2770         CXnProperty* reasonProp( aEventData.GetPropertyL( reason ) );
  2435         CXnProperty* reasonProp( aEventData.GetPropertyL( reason ) );
  2771 
  2436 
  2772         if ( reasonProp )
  2437         if ( reasonProp )
  2773             {
  2438             {
  2912     CXnUiEngine& aEngine,
  2577     CXnUiEngine& aEngine,
  2913     CXnNode& aNode,
  2578     CXnNode& aNode,
  2914     CXnNode& aEventData,
  2579     CXnNode& aEventData,
  2915     CXnDomNode& aActionNode,
  2580     CXnDomNode& aActionNode,
  2916     CXnDomNode& aTriggerNode,
  2581     CXnDomNode& aTriggerNode,
  2917     TInt aSource )
  2582     TInt /*aSource*/ )
  2918     {
  2583     {
  2919     const TDesC8& nameString( aTriggerNode.AttributeValue( KName ) );
  2584     const TDesC8& nameString( aTriggerNode.AttributeValue( KName ) );
  2920 
  2585 
  2921     if ( nameString == KNullDesC8 )
  2586     if ( nameString == KNullDesC8 )
  2922         {
  2587         {
  2926     CXnProperty* eventName( aEventData.NameL() );
  2591     CXnProperty* eventName( aEventData.NameL() );
  2927     const TDesC8& eventNameString( eventName->StringValue() );
  2592     const TDesC8& eventNameString( eventName->StringValue() );
  2928 
  2593 
  2929     if ( nameString == eventNameString )
  2594     if ( nameString == eventNameString )
  2930         {
  2595         {
  2931         if ( nameString == XnPropertyNames::action::trigger::name::KStylus )
       
  2932             {
       
  2933             if ( !MatchStylusTriggerL( aEventData, aTriggerNode ) )
       
  2934                 {
       
  2935                 return EFalse;
       
  2936                 }
       
  2937             }
       
  2938         // Check if triggernode properties match the ones defined in theme
  2596         // Check if triggernode properties match the ones defined in theme
  2939         // This is for identifying keyup in activate-trigger
  2597         // This is for identifying keyup in activate-trigger
  2940         else if ( nameString == XnPropertyNames::action::trigger::name::KActivate )
  2598         if ( nameString == XnPropertyNames::action::trigger::name::KActivate )
  2941             {
  2599             {
  2942             if ( !MatchActivateTriggerPropertiesL( aEventData, aTriggerNode ) )
  2600             if ( !MatchActivateTriggerPropertiesL( aEventData, aTriggerNode ) )
  2943                 {
       
  2944                 return EFalse;
       
  2945                 }
       
  2946             }
       
  2947         // Check if the trigger is timed trigger
       
  2948         else if ( MatchTimedTriggerPropertiesL( aTriggerNode ) )
       
  2949             {
       
  2950             if ( !aThis->PeriodicTimer() )
       
  2951                 {
       
  2952                 aThis->CreatePeriodicL();
       
  2953                 }
       
  2954 
       
  2955             if ( !aThis->PeriodicTimer()->IsActive() )
       
  2956                 {
       
  2957                 TXnTimedTrigger* params = new ( ELeave ) TXnTimedTrigger;
       
  2958                 CleanupStack::PushL( params );
       
  2959 
       
  2960                 params->iNodeImpl = aThis;
       
  2961                 params->iEngine = &aEngine;
       
  2962                 params->iNode = &aNode;
       
  2963                 params->iEventData = &aEventData;
       
  2964                 params->iActionNode = &aActionNode;
       
  2965                 params->iTriggerNode = &aTriggerNode;
       
  2966 
       
  2967                 TInt delay( 0 );
       
  2968 
       
  2969                 ResolveTriggerDelayL( aEngine, aTriggerNode, delay );
       
  2970                 aNode.SetTriggerDelay( delay );
       
  2971 
       
  2972                 CleanupStack::Pop( params );
       
  2973 
       
  2974                 aThis->PeriodicTimer()->Start(
       
  2975                     TTimeIntervalMicroSeconds32( delay ),
       
  2976                     TTimeIntervalMicroSeconds32( delay ),
       
  2977                     TCallBack( CXnNodeImpl::PeriodicEventL, params ) );
       
  2978 
       
  2979                 return ETrue;
       
  2980                 }
       
  2981             else
       
  2982                 {
  2601                 {
  2983                 return EFalse;
  2602                 return EFalse;
  2984                 }
  2603                 }
  2985             }
  2604             }
  2986         else if ( nameString == XnPropertyNames::action::trigger::name::KTitleToScroll ||
  2605         else if ( nameString == XnPropertyNames::action::trigger::name::KTitleToScroll ||
  3011                   nameString == XnPropertyNames::action::trigger::name::KEditMode )
  2630                   nameString == XnPropertyNames::action::trigger::name::KEditMode )
  3012             {
  2631             {
  3013             if ( !MatchValueAttributeTriggerL( aEventData, aTriggerNode ) )
  2632             if ( !MatchValueAttributeTriggerL( aEventData, aTriggerNode ) )
  3014                 {
  2633                 {
  3015                 return EFalse;
  2634                 return EFalse;
  3016                 }
       
  3017             }
       
  3018         else if ( aSource != XnEventSource::EUnknown )
       
  3019             {
       
  3020             CXnDomAttribute* attr = static_cast< CXnDomAttribute* >
       
  3021                 ( aTriggerNode.AttributeList().FindByName(
       
  3022                     XnPropertyNames::common::KEventFilter ) );
       
  3023             if ( attr )
       
  3024                 {
       
  3025                 if ( attr->Value().Find(XnPropertyNames::action::trigger::name::KStylus)
       
  3026                      != KErrNotFound &&
       
  3027                      aSource == XnEventSource::EStylus )
       
  3028                     {
       
  3029                     return EFalse;
       
  3030                     }
       
  3031                 else if ( attr->Value().Find(XnPropertyNames::action::trigger::name::KKeyEvent)
       
  3032                           != KErrNotFound &&
       
  3033                           aSource == XnEventSource::EKey )
       
  3034                     {
       
  3035                     return EFalse;
       
  3036                     }
       
  3037                 }
  2635                 }
  3038             }
  2636             }
  3039 
  2637 
  3040         RunEventsL( aThis, aEngine, aNode, aActionNode, aTriggerNode, aEventData );
  2638         RunEventsL( aThis, aEngine, aNode, aActionNode, aTriggerNode, aEventData );
  3041 
  2639 
  3157     adapter.HandleXuikonEventL(
  2755     adapter.HandleXuikonEventL(
  3158         aNode.AppIfL(), aEventData.AppIfL(), aTriggerNode, aEventNode );
  2756         aNode.AppIfL(), aEventData.AppIfL(), aTriggerNode, aEventNode );
  3159     }
  2757     }
  3160 
  2758 
  3161 // -----------------------------------------------------------------------------
  2759 // -----------------------------------------------------------------------------
  3162 // RunAppExit
       
  3163 // -----------------------------------------------------------------------------
       
  3164 //
       
  3165 static void RunAppExit( CXnUiEngine& aEngine )
       
  3166     {
       
  3167     CXnAppUiAdapter& adapter( aEngine.AppUiAdapter() );
       
  3168     
       
  3169     adapter.Exit();
       
  3170     }
       
  3171 
       
  3172 // -----------------------------------------------------------------------------
       
  3173 // RunFullScreenEffectL
  2760 // RunFullScreenEffectL
  3174 // -----------------------------------------------------------------------------
  2761 // -----------------------------------------------------------------------------
  3175 //
  2762 //
  3176 static void RunFullScreenEffectL( CXnUiEngine& aEngine, CXnDomNode& aEventNode )
  2763 static void RunFullScreenEffectL( CXnUiEngine& aEngine, CXnDomNode& aEventNode )
  3177     {
  2764     {
  3351 //
  2938 //
  3352 static void RunEditL(
  2939 static void RunEditL(
  3353     CXnNodeImpl* aThis,
  2940     CXnNodeImpl* aThis,
  3354     CXnUiEngine& aEngine,
  2941     CXnUiEngine& aEngine,
  3355     CXnDomNode& aEventNode )
  2942     CXnDomNode& aEventNode )
  3356     {    
  2943     {        
  3357     TBool keyEditMode(EFalse);
       
  3358     
       
  3359     aEngine.DisableRenderUiLC();
  2944     aEngine.DisableRenderUiLC();
  3360    
  2945    
  3361     // Set plugins to edit state
  2946     // Set plugins to edit state
  3362     RPointerArray< CXnPluginData>& plugins( 
  2947     RPointerArray< CXnPluginData>& plugins( 
  3363             aEngine.ViewManager()->ActiveViewData().PluginData() );
  2948             aEngine.ViewManager()->ActiveViewData().PluginData() );
  3418                             }
  3003                             }
  3419                         }
  3004                         }
  3420 
  3005 
  3421                     CleanupStack::PopAndDestroy( array );
  3006                     CleanupStack::PopAndDestroy( array );
  3422                     }
  3007                     }
  3423                 else if ( name == XnPropertyNames::common::KKeyMoveMode )
  3008                 }
  3424                     {
  3009             }
  3425                     if ( value == XnPropertyNames::KTrue )
  3010         }
  3426                         {
  3011     TBool useEmpty( aEngine.ViewManager()->ActiveViewData().UseEmptyWidget() );
  3427                         keyEditMode = ETrue;
  3012     
  3428                         }
  3013     for ( TInt i = 0; i < plugins.Count(); i++ )
  3429                     }
  3014         {
  3430                 }
  3015         CXnNode* node( plugins[i]->Owner()->LayoutNode() );
  3431             }
       
  3432         }
       
  3433     if ( keyEditMode )
       
  3434         {
       
  3435         for ( TInt i = 0; i < plugins.Count(); i++ )
       
  3436             {
       
  3437             if ( plugins[i]->Occupied() )
       
  3438                 {
       
  3439                 CXnNode* node( plugins[i]->Owner()->LayoutNode() );
       
  3440                                              
       
  3441                 node->SetStateL( XnPropertyNames::style::common::KEdit );                                       
       
  3442                 }
       
  3443             }
       
  3444         
  3016         
  3445         aEngine.EditMode()->SetEditModeL( CXnEditMode::EKeyMove );
  3017         node->SetStateL( XnPropertyNames::style::common::KEdit );
  3446 
  3018                                
  3447         // Put focus to parent plugin if focused node is not a plugin already
  3019         if ( !plugins[i]->Occupied() && useEmpty )
  3448         CXnNode* focusedNode = aEngine.FocusedNode();
  3020             {                               
  3449         
  3021             // Make empty space visible
  3450         if ( focusedNode && focusedNode->DomNode()->Name() != _L8( "plugin" ) )
  3022             SetStringPropertyToNodeL( *sp, *node,
  3451             {
  3023                 XnPropertyNames::style::common::KVisibility,
  3452             for ( CXnNode* candidate =
  3024                 XnPropertyNames::style::common::visibility::KVisible );                    
  3453                   focusedNode; candidate; candidate = candidate->Parent() )
  3025             }                                              
  3454                 {
  3026         }
  3455                 if ( candidate->DomNode()->Name() == _L8( "plugin" ) )
  3027     
  3456                     {
       
  3457                     candidate->SetStateL( XnPropertyNames::style::common::KFocus );
       
  3458                     break;
       
  3459                     }
       
  3460                 }
       
  3461             }
       
  3462         }
       
  3463     else 
       
  3464         {        
       
  3465         TBool useEmpty( aEngine.ViewManager()->ActiveViewData().UseEmptyWidget() );
       
  3466         
       
  3467         for ( TInt i = 0; i < plugins.Count(); i++ )
       
  3468             {
       
  3469             CXnNode* node( plugins[i]->Owner()->LayoutNode() );
       
  3470             
       
  3471             node->SetStateL( XnPropertyNames::style::common::KEdit );
       
  3472                                    
       
  3473             if ( !plugins[i]->Occupied() && useEmpty )
       
  3474                 {                               
       
  3475                 // Make empty space visible
       
  3476                 SetStringPropertyToNodeL( *sp, *node,
       
  3477                     XnPropertyNames::style::common::KVisibility,
       
  3478                     XnPropertyNames::style::common::visibility::KVisible );                    
       
  3479                 }                                              
       
  3480             }
       
  3481         
       
  3482         aEngine.EditMode()->SetEditModeL( CXnEditMode::EDragAndDrop );        
  3028         aEngine.EditMode()->SetEditModeL( CXnEditMode::EDragAndDrop );        
  3483         aEngine.AppUiAdapter().ViewAdapter().BgManager().DrawNow();
  3029         aEngine.AppUiAdapter().ViewAdapter().CloseAllPopupsL();
  3484         }
       
  3485 
  3030 
  3486     CleanupStack::PopAndDestroy();
  3031     CleanupStack::PopAndDestroy();
  3487     
  3032     
  3488     aEngine.AppUiAdapter().ViewAdapter().UpdateRskByModeL();
  3033     aEngine.AppUiAdapter().ViewAdapter().UpdateRskByModeL();
  3489     }
  3034     }
  3495 static void RunResetEditL(
  3040 static void RunResetEditL(
  3496     CXnNodeImpl* aThis,
  3041     CXnNodeImpl* aThis,
  3497     CXnUiEngine& aEngine,
  3042     CXnUiEngine& aEngine,
  3498     CXnDomNode& aEventNode )
  3043     CXnDomNode& aEventNode )
  3499     {    
  3044     {    
  3500     TBool keyEditMode( 
       
  3501             aEngine.EditMode()->EditState() == CXnEditMode::EKeyMove );
       
  3502     
       
  3503     CXnDomList& children( aEventNode.ChildNodes() );
  3045     CXnDomList& children( aEventNode.ChildNodes() );
  3504 
  3046 
  3505     TInt count( children.Length() );
  3047     TInt count( children.Length() );
  3506 
  3048 
  3507     for ( TInt i = 0; i < count; ++i )
  3049     for ( TInt i = 0; i < count; ++i )
  3556     RPointerArray< CXnPluginData>& plugins( 
  3098     RPointerArray< CXnPluginData>& plugins( 
  3557             aEngine.ViewManager()->ActiveViewData().PluginData() );
  3099             aEngine.ViewManager()->ActiveViewData().PluginData() );
  3558 
  3100 
  3559     CXnDomStringPool* sp( aEventNode.StringPool() );
  3101     CXnDomStringPool* sp( aEventNode.StringPool() );
  3560 
  3102 
  3561     if ( keyEditMode )
  3103     TBool useEmpty( aEngine.ViewManager()->ActiveViewData().UseEmptyWidget() );
  3562         {
  3104     
  3563         for ( TInt i = 0; i < plugins.Count(); i++ )
  3105     for ( TInt i = 0; i < plugins.Count(); i++ )
  3564             {
  3106         {
  3565             if ( plugins[i]->Occupied() )
  3107         CXnNode* node( plugins[i]->Owner()->LayoutNode() );
  3566                 {
       
  3567                 CXnNode* node( plugins[i]->Owner()->LayoutNode() );
       
  3568                                              
       
  3569                 node->UnsetStateL( XnPropertyNames::style::common::KEdit );                                       
       
  3570                 }
       
  3571             }        
       
  3572         }
       
  3573     else
       
  3574         {
       
  3575         TBool useEmpty( aEngine.ViewManager()->ActiveViewData().UseEmptyWidget() );
       
  3576         
  3108         
  3577         for ( TInt i = 0; i < plugins.Count(); i++ )
  3109         node->UnsetStateL( XnPropertyNames::style::common::KEdit );
  3578             {
  3110         
  3579             CXnNode* node( plugins[i]->Owner()->LayoutNode() );
  3111         if ( !plugins[i]->Occupied() && useEmpty )
  3580             
  3112             {                               
  3581             node->UnsetStateL( XnPropertyNames::style::common::KEdit );
  3113             // Make empty space blank
  3582             
  3114             SetStringPropertyToNodeL( *sp, *node,
  3583             if ( !plugins[i]->Occupied() && useEmpty )
  3115                 XnPropertyNames::style::common::KVisibility,
  3584                 {                               
  3116                 XnPropertyNames::style::common::visibility::KBlank );                    
  3585                 // Make empty space blank
  3117             }
  3586                 SetStringPropertyToNodeL( *sp, *node,
  3118         }                
  3587                     XnPropertyNames::style::common::KVisibility,
       
  3588                     XnPropertyNames::style::common::visibility::KBlank );                    
       
  3589                 }
       
  3590             }                
       
  3591         }
       
  3592     
  3119     
  3593     aEngine.EditMode()->SetEditModeL( CXnEditMode::ENone );   
  3120     aEngine.EditMode()->SetEditModeL( CXnEditMode::ENone );   
  3594     aEngine.AppUiAdapter().ViewAdapter().BgManager().DrawNow();
       
  3595 
  3121 
  3596     aEngine.AppUiAdapter().ViewAdapter().UpdateRskByModeL();
  3122     aEngine.AppUiAdapter().ViewAdapter().UpdateRskByModeL();
  3597     }
  3123     }
  3598 
  3124 
  3599 // -----------------------------------------------------------------------------
  3125 // -----------------------------------------------------------------------------
  3826         CleanupStack::PushL( propertyValue );
  3352         CleanupStack::PushL( propertyValue );
  3827 
  3353 
  3828         aNode->SetPropertyL( propertyValue );
  3354         aNode->SetPropertyL( propertyValue );
  3829 
  3355 
  3830         CleanupStack::Pop( propertyValue );
  3356         CleanupStack::Pop( propertyValue );
  3831         }
       
  3832     }
       
  3833 
       
  3834 // -----------------------------------------------------------------------------
       
  3835 // RunResetStylusCounterL
       
  3836 // -----------------------------------------------------------------------------
       
  3837 //
       
  3838 static void RunResetStylusCounterL(
       
  3839     CXnNodeImpl* aThis,
       
  3840     CXnUiEngine& aEngine,
       
  3841     const TDesC8& aId )
       
  3842     {
       
  3843     CXnNode* node( aEngine.FindNodeByIdL( aId, aThis->Namespace() ) );
       
  3844 
       
  3845     if ( node )
       
  3846         {
       
  3847         CXnControlAdapter* adapter( node->Control() );
       
  3848 
       
  3849         if ( adapter )
       
  3850             {
       
  3851             adapter->ResetStylusCounter();
       
  3852             }
       
  3853         }
  3357         }
  3854     }
  3358     }
  3855 
  3359 
  3856 // -----------------------------------------------------------------------------
  3360 // -----------------------------------------------------------------------------
  3857 // GetSystemSetDataL
  3361 // GetSystemSetDataL
  4153         RPointerArray< CXnPluginData > plugins;
  3657         RPointerArray< CXnPluginData > plugins;
  4154         CleanupClosePushL( plugins );
  3658         CleanupClosePushL( plugins );
  4155 
  3659 
  4156         for( TInt i = 0; i < pluginNodes.Count(); i++ )
  3660         for( TInt i = 0; i < pluginNodes.Count(); i++ )
  4157             {
  3661             {
  4158             CXnPluginData& data( viewData.Plugin( pluginNodes[i] ) );
  3662             CXnPluginData* data( viewData.Plugin( pluginNodes[i] ) );
  4159             
  3663             
  4160             if( data.Occupied() )
  3664             if( data && data->Occupied() )
  4161                 {
  3665                 {
  4162                 plugins.AppendL( &data );
  3666                 plugins.AppendL( data );
  4163                 }
  3667                 }
  4164             }
  3668             }
  4165         
  3669         
  4166         plugins.Append( &viewData );
  3670         plugins.Append( &viewData );
  4167             
  3671             
  4297             }
  3801             }
  4298         CleanupStack::PopAndDestroy( array );
  3802         CleanupStack::PopAndDestroy( array );
  4299         }
  3803         }
  4300 
  3804 
  4301     CleanupStack::PopAndDestroy( 2, &values );
  3805     CleanupStack::PopAndDestroy( 2, &values );
  4302     }
       
  4303 
       
  4304 // -----------------------------------------------------------------------------
       
  4305 // ResolveTriggerDelayL
       
  4306 // -----------------------------------------------------------------------------
       
  4307 //
       
  4308 static void ResolveTriggerDelayL(
       
  4309     CXnUiEngine& /*aEngine*/,
       
  4310     CXnDomNode& aNode,
       
  4311     TInt& aDelay )
       
  4312     {
       
  4313     CXnDomList& children = aNode.ChildNodes();
       
  4314     for ( TInt i = 0; i < children.Length(); i++ )
       
  4315         {
       
  4316         CXnDomNode* child = static_cast< CXnDomNode* >( children.Item( i ) );
       
  4317         const TDesC8& name = child->AttributeValue( XnPropertyNames::action::KName );
       
  4318         if ( name == XnPropertyNames::action::trigger::KDelay )
       
  4319             {
       
  4320             const TDesC8& value = child->AttributeValue( XnPropertyNames::action::KValue );
       
  4321             if ( value != KNullDesC8 )
       
  4322                 {
       
  4323                 TInt triggerDelay( 0 );
       
  4324                 TLex8 lex;
       
  4325                 lex.Assign( value );
       
  4326                 lex.Val( triggerDelay );
       
  4327                 aDelay = triggerDelay;
       
  4328                 }
       
  4329             }
       
  4330         }
       
  4331     }
  3806     }
  4332 
  3807 
  4333 // -----------------------------------------------------------------------------
  3808 // -----------------------------------------------------------------------------
  4334 // RunEventL
  3809 // RunEventL
  4335 // -----------------------------------------------------------------------------
  3810 // -----------------------------------------------------------------------------
  4400     else if ( nameString == XnPropertyNames::action::event::KResetEditMode )
  3875     else if ( nameString == XnPropertyNames::action::event::KResetEditMode )
  4401         {
  3876         {
  4402         RunResetEditL( aThis, aEngine, aEventNode );
  3877         RunResetEditL( aThis, aEngine, aEventNode );
  4403         return ETrue;
  3878         return ETrue;
  4404         }
  3879         }
  4405     else if ( nameString == XnPropertyNames::action::event::KResetStylusCounter )
       
  4406         {
       
  4407         HBufC8* id( NULL );
       
  4408 
       
  4409         GetSystemSetDataL( aEventNode, id );
       
  4410         CleanupStack::PushL( id );
       
  4411 
       
  4412         RunResetStylusCounterL( aThis, aEngine, *id );
       
  4413 
       
  4414         CleanupStack::PopAndDestroy( id );
       
  4415 
       
  4416         return EFalse;
       
  4417         }
       
  4418     else if ( nameString == XnPropertyNames::action::event::KRunAddWidgetQuery )
  3880     else if ( nameString == XnPropertyNames::action::event::KRunAddWidgetQuery )
  4419         {
  3881         {
  4420         aEngine.Editor()->AddWidgetL();
  3882         aEngine.Editor()->AddWidgetL();
  4421         }
  3883         }
  4422     else if ( nameString == XnPropertyNames::action::event::KRemoveFocusedWidget )
  3884     else if ( nameString == XnPropertyNames::action::event::KRemoveFocusedWidget )
  4462         }
  3924         }
  4463     else if ( nameString == XnPropertyNames::action::event::KDeactivate )
  3925     else if ( nameString == XnPropertyNames::action::event::KDeactivate )
  4464         {
  3926         {
  4465         RunDeactivateL( aThis, aEngine, aEventNode );
  3927         RunDeactivateL( aThis, aEngine, aEventNode );
  4466         return ETrue;
  3928         return ETrue;
  4467         }
       
  4468     else if ( nameString == XnPropertyNames::action::event::KExit )
       
  4469         {
       
  4470         RunAppExit( aEngine );
       
  4471         }
  3929         }
  4472     else if ( nameString == XnPropertyNames::action::event::KTryDisplayingMenu )
  3930     else if ( nameString == XnPropertyNames::action::event::KTryDisplayingMenu )
  4473         {
  3931         {
  4474         RunTryDisplayingMenuL( aEngine, aEventNode );
  3932         RunTryDisplayingMenuL( aEngine, aEventNode );
  4475         }
  3933         }
  4546         
  4004         
  4547         CleanupStack::PopAndDestroy( trigger );
  4005         CleanupStack::PopAndDestroy( trigger );
  4548                 
  4006                 
  4549         return ETrue;
  4007         return ETrue;
  4550         }
  4008         }
  4551     else if ( nameString == XnPropertyNames::action::event::KRestartTriggerTimer )
       
  4552         {
       
  4553         TInt delay( 0 );
       
  4554 
       
  4555         ResolveTriggerDelayL( aEngine, aEventNode, delay );
       
  4556 
       
  4557         if ( delay > 0 )
       
  4558             {
       
  4559             aNode.RestartTimedTrigger( delay );
       
  4560             }
       
  4561         else
       
  4562             {
       
  4563             TTimeIntervalMicroSeconds32 delayms = aNode.TriggerDelay();
       
  4564             aNode.RestartTimedTrigger( delayms.Int() );
       
  4565             }
       
  4566 
       
  4567         return ETrue;
       
  4568         }
       
  4569     else if ( nameString == XnPropertyNames::action::event::KCancelTriggerTimer )
       
  4570         {
       
  4571         aNode.RestartTimedTrigger();
       
  4572         return ETrue;
       
  4573         }
       
  4574     else if ( nameString == XnPropertyNames::action::event::KSetWallpaper )
  4009     else if ( nameString == XnPropertyNames::action::event::KSetWallpaper )
  4575         {
  4010         {
  4576         aEngine.AppUiAdapter().ViewAdapter().BgManager().SetWallpaperL();
  4011         aEngine.AppUiAdapter().ViewAdapter().BgManager().SetWallpaperL();
  4577         return ETrue;
  4012         return ETrue;
  4578         }
  4013         }
  4913         XnPropertyNames::style::common::KS60NavLooping );
  4348         XnPropertyNames::style::common::KS60NavLooping );
  4914     if ( navLoopProperty )
  4349     if ( navLoopProperty )
  4915         {
  4350         {
  4916         const TDesC8& loopValue = navLoopProperty->StringValue();
  4351         const TDesC8& loopValue = navLoopProperty->StringValue();
  4917         if ( loopValue != KNullDesC8 &&
  4352         if ( loopValue != KNullDesC8 &&
  4918              loopValue == XnPropertyNames::grid::s60_focus_looping::KStop )
  4353              loopValue == XnPropertyNames::style::common::s60_focus_looping::KStop )
  4919             {
  4354             {
  4920             return NULL;
  4355             return NULL;
  4921             }
  4356             }
  4922         }
  4357         }
  4923     if ( aForward )
  4358     if ( aForward )
  6554     CXnProperty* navind = aNode.NavIndexL();
  5989     CXnProperty* navind = aNode.NavIndexL();
  6555     if ( navind && navind->StringValue() == XnPropertyNames::style::common::KAppearance )
  5990     if ( navind && navind->StringValue() == XnPropertyNames::style::common::KAppearance )
  6556         {
  5991         {
  6557         
  5992         
  6558         CXnAppUiAdapter& appui = static_cast< CXnAppUiAdapter& >( *iAvkonAppUi );
  5993         CXnAppUiAdapter& appui = static_cast< CXnAppUiAdapter& >( *iAvkonAppUi );
  6559         CXnPluginData& plugin( 
  5994         CXnPluginData* plugin( 
  6560                     appui.ViewManager().ActiveViewData().Plugin( &aNode ) );
  5995                     appui.ViewManager().ActiveViewData().Plugin( &aNode ) );
  6561         
  5996         
  6562         // find if node is in a widget that contatins some opened popup window
  5997         // find if node is in a widget that contatins some opened popup window       
  6563        
  5998         TBool containsPopUp = ( plugin ? plugin->IsDisplayingPopup() : EFalse );
  6564         TBool containsPopUp = plugin.IsDisplayingPopup();
  5999 
  6565         
       
  6566         CXnNode* nextNode( NULL );
  6000         CXnNode* nextNode( NULL );
  6567         RPointerArray< CXnNode >& array = aEngine.ViewManager()->AppearanceNodes();
  6001         RPointerArray< CXnNode >& array = aEngine.ViewManager()->AppearanceNodes();
  6568         if ( aKeyEvent.iScanCode == EStdKeyDownArrow )
  6002         if ( aKeyEvent.iScanCode == EStdKeyDownArrow )
  6569             {
  6003             {
  6570             nextNode = FindNextNodeFromBelowL( array, aNode, containsPopUp );
  6004             nextNode = FindNextNodeFromBelowL( array, aNode, containsPopUp );
  7079     CXnProperty* navLoopProperty = aNode->GetPropertyL(
  6513     CXnProperty* navLoopProperty = aNode->GetPropertyL(
  7080         XnPropertyNames::style::common::KS60NavLooping );
  6514         XnPropertyNames::style::common::KS60NavLooping );
  7081     if ( navLoopProperty )
  6515     if ( navLoopProperty )
  7082         {
  6516         {
  7083         const TDesC8& loopValue = navLoopProperty->StringValue();
  6517         const TDesC8& loopValue = navLoopProperty->StringValue();
  7084         if ( loopValue == XnPropertyNames::grid::s60_focus_looping::KStop )
  6518         if ( loopValue == XnPropertyNames::style::common::s60_focus_looping::KStop )
  7085             {
  6519             {
  7086             return EFalse;
  6520             return EFalse;
  7087             }
  6521             }
  7088         }
  6522         }
  7089     return ETrue;
  6523     return ETrue;
  7398     delete iPropertyList;
  6832     delete iPropertyList;
  7399     delete iType;
  6833     delete iType;
  7400     iPropertyPseudoClasses.Reset();
  6834     iPropertyPseudoClasses.Reset();
  7401     iStates.Reset();
  6835     iStates.Reset();
  7402     iChildren.ResetAndDestroy();
  6836     iChildren.ResetAndDestroy();
  7403     delete iGridPropertyCache;
       
  7404     delete iLayoutPropertyCache;
  6837     delete iLayoutPropertyCache;
  7405     DeletePeriodic();
       
  7406     }
  6838     }
  7407 
  6839 
  7408 // -----------------------------------------------------------------------------
  6840 // -----------------------------------------------------------------------------
  7409 // CXnNodeImpl::SetNode
  6841 // CXnNodeImpl::SetNode
  7410 // -----------------------------------------------------------------------------
  6842 // -----------------------------------------------------------------------------
  7599 // Set a property.
  7031 // Set a property.
  7600 // -----------------------------------------------------------------------------
  7032 // -----------------------------------------------------------------------------
  7601 //
  7033 //
  7602 const TDesC8& CXnNodeImpl::GetPCData()
  7034 const TDesC8& CXnNodeImpl::GetPCData()
  7603     {
  7035     {
  7604     if ( iRef )
       
  7605         {
       
  7606         CXnNode* refNode( NULL );
       
  7607         TRAP_IGNORE( refNode = RefNodeL( this, iRef, iUiEngine ) );
       
  7608 
       
  7609         if ( refNode )
       
  7610             {
       
  7611             return refNode->GetPCData();
       
  7612             }
       
  7613         }
       
  7614 
       
  7615     return iDomNode->PCData();
  7036     return iDomNode->PCData();
  7616     }
  7037     }
  7617 
  7038 
  7618 // -----------------------------------------------------------------------------
  7039 // -----------------------------------------------------------------------------
  7619 // CXnNodeImpl::SetHandleTooltip()
  7040 // CXnNodeImpl::SetHandleTooltip()
  7628 // -----------------------------------------------------------------------------
  7049 // -----------------------------------------------------------------------------
  7629 // CXnNodeImpl::ShowPopupsL()
  7050 // CXnNodeImpl::ShowPopupsL()
  7630 // Searchs and shoes tooltips
  7051 // Searchs and shoes tooltips
  7631 // -----------------------------------------------------------------------------
  7052 // -----------------------------------------------------------------------------
  7632 //
  7053 //
  7633 void CXnNodeImpl::ShowPopupsL( TRect aRect, TInt /*aSource*/ )
  7054 void CXnNodeImpl::ShowPopupsL( TRect aRect, TInt aSource )
  7634     {
  7055     {
  7635     if ( iHandleTooltip )
  7056     if ( iHandleTooltip )
  7636         {
  7057         {
  7637         for ( TInt i = 0; i < iChildren.Count(); i++ )
  7058         for ( TInt i = 0; i < iChildren.Count(); i++ )
  7638             {
  7059             {
  7645 
  7066 
  7646                 XnComponentInterface::MakeInterfaceL( popup, tooltipNode );
  7067                 XnComponentInterface::MakeInterfaceL( popup, tooltipNode );
  7647 
  7068 
  7648                 if ( popup )
  7069                 if ( popup )
  7649                     {
  7070                     {
  7650                     popup->ShowPopupL( aRect );
  7071                     if ( aSource == XnEventSource::EStylus )
       
  7072                         {
       
  7073                         const TTimeIntervalMicroSeconds32 delay( 0 );                       
       
  7074                         const TTimeIntervalMicroSeconds32 display( 1000 * 1000 * 6 );                                                
       
  7075                         
       
  7076                         popup->ShowPopupL( aRect, delay, display );
       
  7077                         }
       
  7078                     else
       
  7079                         {
       
  7080                         popup->ShowPopupL( aRect );
       
  7081                         }
  7651                     }
  7082                     }
  7652                 }
  7083                 }
  7653             }
  7084             }
  7654         }
  7085         }
  7655     }
  7086     }
  7856 //
  7287 //
  7857 TInt CXnNodeImpl::DoSetPropertyL( CXnProperty* aProperty )
  7288 TInt CXnNodeImpl::DoSetPropertyL( CXnProperty* aProperty )
  7858     {
  7289     {
  7859     TInt level( XnDirtyLevel::ENone );
  7290     TInt level( XnDirtyLevel::ENone );
  7860 
  7291 
  7861     const TDesC8* refid( CheckRefAttributeL( iRef ) );
       
  7862 
       
  7863     if ( refid && aProperty->Property()->Name() != XnPropertyNames::common::KId )
       
  7864         {
       
  7865         delete aProperty;
       
  7866 
       
  7867         return level;
       
  7868         }
       
  7869 
       
  7870     const TDesC8& name( aProperty->Property()->Name() );
  7292     const TDesC8& name( aProperty->Property()->Name() );
  7871 
  7293 
  7872     CXnProperty* prop( GetPropertyL( name ) );
  7294     CXnProperty* prop( GetPropertyL( name ) );
  7873 
  7295 
  7874     if ( prop && prop->EqualsL( *aProperty ) )
  7296     if ( prop && prop->EqualsL( *aProperty ) )
  7893         if ( IsStateSet( PseudoClassName( pseudoClass ) ) )
  7315         if ( IsStateSet( PseudoClassName( pseudoClass ) ) )
  7894             {
  7316             {
  7895             SetCachedProperty(
  7317             SetCachedProperty(
  7896                 aProperty,
  7318                 aProperty,
  7897                 iLayoutPropertyCache,
  7319                 iLayoutPropertyCache,
  7898                 iRef,
       
  7899                 iName,
  7320                 iName,
  7900                 iValue,
  7321                 iValue,
  7901                 iLabel,
  7322                 iLabel,
  7902                 iInitialFocus,
  7323                 iInitialFocus,
  7903                 iClass,
  7324                 iClass,
  7904                 iId,
  7325                 iId,
  7905                 iPath,
  7326                 iPath,
  7906                 iMaskPath,
  7327                 iMaskPath,
  7907                 iGridPropertyCache,
       
  7908                 EFalse,
  7328                 EFalse,
  7909                 EFalse );
  7329                 EFalse );
  7910             }
  7330             }
  7911         }
  7331         }
  7912     else
  7332     else
  7913         {
  7333         {
  7914         SetCachedProperty(
  7334         SetCachedProperty(
  7915             aProperty,
  7335             aProperty,
  7916             iLayoutPropertyCache,
  7336             iLayoutPropertyCache,
  7917             iRef,
       
  7918             iName,
  7337             iName,
  7919             iValue,
  7338             iValue,
  7920             iLabel,
  7339             iLabel,
  7921             iInitialFocus,
  7340             iInitialFocus,
  7922             iClass,
  7341             iClass,
  7923             iId,
  7342             iId,
  7924             iPath,
  7343             iPath,
  7925             iMaskPath,
  7344             iMaskPath,
  7926             iGridPropertyCache,
       
  7927             EFalse,
  7345             EFalse,
  7928             EFalse );
  7346             EFalse );
  7929         }
  7347         }
  7930 
  7348 
  7931     iPropertyList->SetPropertyL( aProperty );
  7349     iPropertyList->SetPropertyL( aProperty );
  7981 // Set a property.
  7399 // Set a property.
  7982 // -----------------------------------------------------------------------------
  7400 // -----------------------------------------------------------------------------
  7983 //
  7401 //
  7984 void CXnNodeImpl::InitializePropertyL( CXnProperty* aProperty )
  7402 void CXnNodeImpl::InitializePropertyL( CXnProperty* aProperty )
  7985     {
  7403     {
  7986     const TDesC8* refid( CheckRefAttributeL( iRef ) );
       
  7987 
       
  7988     if ( refid && aProperty->Property()->Name() != XnPropertyNames::common::KId )
       
  7989         {
       
  7990         delete aProperty;
       
  7991 
       
  7992         return;
       
  7993         }
       
  7994 
       
  7995     if ( aProperty->Property()->PseudoClass() != CXnDomProperty::ENone )
  7404     if ( aProperty->Property()->PseudoClass() != CXnDomProperty::ENone )
  7996         {
  7405         {
  7997         InsertPropertyPseudoClassL(
  7406         InsertPropertyPseudoClassL(
  7998             aProperty->Property()->PseudoClass(), iPropertyPseudoClasses );
  7407             aProperty->Property()->PseudoClass(), iPropertyPseudoClasses );
  7999 
  7408 
  8000         SetCachedProperty(
  7409         SetCachedProperty(
  8001             aProperty,
  7410             aProperty,
  8002             iLayoutPropertyCache,
  7411             iLayoutPropertyCache,
  8003             iRef,
       
  8004             iName,
  7412             iName,
  8005             iValue,
  7413             iValue,
  8006             iLabel,
  7414             iLabel,
  8007             iInitialFocus,
  7415             iInitialFocus,
  8008             iClass,
  7416             iClass,
  8009             iId,
  7417             iId,
  8010             iPath,
  7418             iPath,
  8011             iMaskPath,
  7419             iMaskPath,
  8012             iGridPropertyCache,
       
  8013             ETrue,
  7420             ETrue,
  8014             ETrue );
  7421             ETrue );
  8015         }
  7422         }
  8016     else
  7423     else
  8017         {
  7424         {
  8018         SetCachedProperty(
  7425         SetCachedProperty(
  8019             aProperty,
  7426             aProperty,
  8020             iLayoutPropertyCache,
  7427             iLayoutPropertyCache,
  8021             iRef,
       
  8022             iName,
  7428             iName,
  8023             iValue,
  7429             iValue,
  8024             iLabel,
  7430             iLabel,
  8025             iInitialFocus,
  7431             iInitialFocus,
  8026             iClass,
  7432             iClass,
  8027             iId,
  7433             iId,
  8028             iPath,
  7434             iPath,
  8029             iMaskPath,
  7435             iMaskPath,
  8030             iGridPropertyCache,
       
  8031             ETrue,
  7436             ETrue,
  8032             EFalse );
  7437             EFalse );
  8033         }
  7438         }
  8034 
  7439 
  8035     iPropertyList->SetPropertyL( aProperty );
  7440     iPropertyList->SetPropertyL( aProperty );
  8040 // Gets a property.
  7445 // Gets a property.
  8041 // -----------------------------------------------------------------------------
  7446 // -----------------------------------------------------------------------------
  8042 //
  7447 //
  8043 CXnProperty* CXnNodeImpl::GetPropertyL( const TDesC8& aKey )
  7448 CXnProperty* CXnNodeImpl::GetPropertyL( const TDesC8& aKey )
  8044     {
  7449     {
  8045     CXnNode* refNode( RefNodeL( this, iRef, iUiEngine ) ) ;
       
  8046 
       
  8047     if ( refNode && aKey != KRef && aKey != KId )
       
  8048         {
       
  8049         return refNode->GetPropertyL( aKey );
       
  8050         }
       
  8051 
       
  8052     CXnDomProperty* attribute = NULL;
  7450     CXnDomProperty* attribute = NULL;
  8053     CXnProperty* property = iPropertyList->GetProperty( aKey );
  7451     CXnProperty* property = iPropertyList->GetProperty( aKey );
  8054 
  7452 
  8055     if ( property )
  7453     if ( property )
  8056         {
  7454         {
  8579 // -----------------------------------------------------------------------------
  7977 // -----------------------------------------------------------------------------
  8580 // PropertyL
  7978 // PropertyL
  8581 // Returns a property.
  7979 // Returns a property.
  8582 // -----------------------------------------------------------------------------
  7980 // -----------------------------------------------------------------------------
  8583 //
  7981 //
  8584 static CXnProperty* PropertyL( CXnNodeImpl* aThis, CXnProperty* aProperty,
  7982 static CXnProperty* PropertyL( CXnProperty* aProperty,
  8585     CXnProperty* ( CXnNode::* aFunc )(), CXnUiEngine* aUiEngine,
  7983     CXnProperty* ( CXnNode::* aFunc )(),
  8586     TAny* aLayoutPropertyCache, CXnNode* aParent, CXnProperty* aRef )
  7984     TAny* aLayoutPropertyCache, CXnNode* aParent )
  8587     {
  7985     {
  8588     CXnNode* refNode( RefNodeL( aThis, aRef, aUiEngine ) ) ;
       
  8589 
       
  8590     if ( refNode )
       
  8591         {
       
  8592         return ( refNode->*aFunc )();
       
  8593         }
       
  8594 
       
  8595     if ( aLayoutPropertyCache && aProperty )
  7986     if ( aLayoutPropertyCache && aProperty )
  8596         {
  7987         {
  8597         CXnDomProperty* attribute = aProperty->Property();
  7988         CXnDomProperty* attribute = aProperty->Property();
  8598         CXnDomList& list = attribute->PropertyValueList();
  7989         CXnDomList& list = attribute->PropertyValueList();
  8599 
  7990 
  8622 
  8013 
  8623     return NULL;
  8014     return NULL;
  8624     }
  8015     }
  8625 
  8016 
  8626 // -----------------------------------------------------------------------------
  8017 // -----------------------------------------------------------------------------
  8627 // ReferredPropertyL
       
  8628 // Returns a referred property.
       
  8629 // -----------------------------------------------------------------------------
       
  8630 //
       
  8631 static CXnProperty* ReferredPropertyL(
       
  8632     RPointerArray< CXnProperty >* aPropertyArray,
       
  8633     RArray< CXnDomProperty::TPseudoClass >& aStates )
       
  8634     {
       
  8635     if ( !aPropertyArray )
       
  8636         {
       
  8637         return NULL;
       
  8638         }
       
  8639     for ( TInt i = aPropertyArray->Count() - 1; i >= 0; --i )
       
  8640         {
       
  8641         CXnProperty* tmp = ( *aPropertyArray )[i];
       
  8642         for ( TInt j = aStates.Count() - 1; j >= 0; --j )
       
  8643             {
       
  8644             if ( aStates[j] == tmp->Property()->PseudoClass() )
       
  8645                 {
       
  8646                 return tmp;
       
  8647                 }
       
  8648             }
       
  8649         for ( TInt j = aStates.Count() - 1; j >= 0; --j )
       
  8650             {
       
  8651             if ( tmp->Property()->PseudoClass() == CXnDomProperty::ENone )
       
  8652                 {
       
  8653                 return tmp;
       
  8654                 }
       
  8655             }
       
  8656         }
       
  8657     for ( TInt i = aPropertyArray->Count() - 1; i >= 0; --i )
       
  8658         {
       
  8659         CXnProperty* tmp = ( *aPropertyArray )[i];
       
  8660         if ( tmp->Property()->PseudoClass() == CXnDomProperty::ENone )
       
  8661             {
       
  8662             return tmp;
       
  8663             }
       
  8664         }
       
  8665     return NULL;
       
  8666     }
       
  8667 
       
  8668 // -----------------------------------------------------------------------------
       
  8669 // RefNodeL
       
  8670 // Returns referred node.
       
  8671 // -----------------------------------------------------------------------------
       
  8672 //
       
  8673 static CXnNode* RefNodeL(
       
  8674     CXnNodeImpl* aThis,
       
  8675     CXnProperty* aRef,
       
  8676     CXnUiEngine* aUiEngine )
       
  8677     {
       
  8678     const TDesC8* refid( CheckRefAttributeL( aRef ) );
       
  8679 
       
  8680     if ( refid )
       
  8681         {
       
  8682         CXnNode* node( aUiEngine->FindNodeByIdL( *refid, aThis->Namespace() ) );
       
  8683 
       
  8684         if ( node )
       
  8685             {
       
  8686             return node;
       
  8687             }
       
  8688         }
       
  8689 
       
  8690     return NULL;
       
  8691     }
       
  8692 
       
  8693 // -----------------------------------------------------------------------------
       
  8694 // CXnNodeImpl::WidthL
  8018 // CXnNodeImpl::WidthL
  8695 // Returns width property.
  8019 // Returns width property.
  8696 // -----------------------------------------------------------------------------
  8020 // -----------------------------------------------------------------------------
  8697 //
  8021 //
  8698 CXnProperty* CXnNodeImpl::WidthL()
  8022 CXnProperty* CXnNodeImpl::WidthL()
  8699     {
  8023     {
  8700     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  8701     if ( refNode )
       
  8702         {
       
  8703         RPointerArray< CXnProperty >* propertyArray =
       
  8704             refNode->Impl()->iLayoutPropertyCache ?
       
  8705             &( refNode->Impl()->iLayoutPropertyCache->iWidths ) :
       
  8706             NULL;
       
  8707         return ReferredPropertyL( propertyArray, iStates );
       
  8708         }
       
  8709     CXnProperty* property =
  8024     CXnProperty* property =
  8710         iLayoutPropertyCache ? iLayoutPropertyCache->iWidth : NULL;
  8025         iLayoutPropertyCache ? iLayoutPropertyCache->iWidth : NULL;
  8711     return PropertyL( this, property, &CXnNode::WidthL,
  8026     return PropertyL( property, &CXnNode::WidthL,
  8712         iUiEngine, iLayoutPropertyCache,
  8027         iLayoutPropertyCache, iParent );
  8713         iParent, iRef );
       
  8714     }
  8028     }
  8715 
  8029 
  8716 // -----------------------------------------------------------------------------
  8030 // -----------------------------------------------------------------------------
  8717 // CXnNodeImpl::HeightL
  8031 // CXnNodeImpl::HeightL
  8718 // Returns height property.
  8032 // Returns height property.
  8719 // -----------------------------------------------------------------------------
  8033 // -----------------------------------------------------------------------------
  8720 //
  8034 //
  8721 CXnProperty* CXnNodeImpl::HeightL()
  8035 CXnProperty* CXnNodeImpl::HeightL()
  8722     {
  8036     {
  8723     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  8724     if (refNode)
       
  8725         {
       
  8726         RPointerArray< CXnProperty >* propertyArray =
       
  8727             refNode->Impl()->iLayoutPropertyCache ?
       
  8728             &( refNode->Impl()->iLayoutPropertyCache->iHeights ) :
       
  8729             NULL;
       
  8730         return ReferredPropertyL( propertyArray, iStates );
       
  8731         }
       
  8732     CXnProperty* property =
  8037     CXnProperty* property =
  8733         iLayoutPropertyCache ? iLayoutPropertyCache->iHeight : NULL;
  8038         iLayoutPropertyCache ? iLayoutPropertyCache->iHeight : NULL;
  8734     return PropertyL( this, property, &CXnNode::HeightL,
  8039     return PropertyL( property, &CXnNode::HeightL,
  8735         iUiEngine, iLayoutPropertyCache,
  8040         iLayoutPropertyCache, iParent );
  8736         iParent, iRef );
       
  8737     }
  8041     }
  8738 
  8042 
  8739 // -----------------------------------------------------------------------------
  8043 // -----------------------------------------------------------------------------
  8740 // CXnNodeImpl::MarginLeftL
  8044 // CXnNodeImpl::MarginLeftL
  8741 // Returns margin-left property.
  8045 // Returns margin-left property.
  8742 // -----------------------------------------------------------------------------
  8046 // -----------------------------------------------------------------------------
  8743 //
  8047 //
  8744 CXnProperty* CXnNodeImpl::MarginLeftL()
  8048 CXnProperty* CXnNodeImpl::MarginLeftL()
  8745     {
  8049     {
  8746     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  8747     if ( refNode )
       
  8748         {
       
  8749         RPointerArray< CXnProperty >* propertyArray =
       
  8750             refNode->Impl()->iLayoutPropertyCache ?
       
  8751             &( refNode->Impl()->iLayoutPropertyCache->iMarginLefts ) :
       
  8752             NULL;
       
  8753         return ReferredPropertyL( propertyArray, iStates );
       
  8754         }
       
  8755     CXnProperty* property =
  8050     CXnProperty* property =
  8756         iLayoutPropertyCache ?
  8051         iLayoutPropertyCache ?
  8757         iLayoutPropertyCache->iMarginLeft :
  8052         iLayoutPropertyCache->iMarginLeft :
  8758         NULL;
  8053         NULL;
  8759     return PropertyL( this, property, &CXnNode::MarginLeftL,
  8054     return PropertyL( property, &CXnNode::MarginLeftL,
  8760         iUiEngine, iLayoutPropertyCache,
  8055         iLayoutPropertyCache, iParent );
  8761         iParent, iRef );
       
  8762     }
  8056     }
  8763 
  8057 
  8764 // -----------------------------------------------------------------------------
  8058 // -----------------------------------------------------------------------------
  8765 // CXnNodeImpl::MarginRightL
  8059 // CXnNodeImpl::MarginRightL
  8766 // Returns margin-right property.
  8060 // Returns margin-right property.
  8767 // -----------------------------------------------------------------------------
  8061 // -----------------------------------------------------------------------------
  8768 //
  8062 //
  8769 CXnProperty* CXnNodeImpl::MarginRightL()
  8063 CXnProperty* CXnNodeImpl::MarginRightL()
  8770     {
  8064     {
  8771     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  8772     if ( refNode )
       
  8773         {
       
  8774         RPointerArray< CXnProperty >* propertyArray =
       
  8775             refNode->Impl()->iLayoutPropertyCache ?
       
  8776             &( refNode->Impl()->iLayoutPropertyCache->iMarginRights ) :
       
  8777             NULL;
       
  8778         return ReferredPropertyL(propertyArray, iStates);
       
  8779         }
       
  8780     CXnProperty* property =
  8065     CXnProperty* property =
  8781         iLayoutPropertyCache ?
  8066         iLayoutPropertyCache ?
  8782         iLayoutPropertyCache->iMarginRight :
  8067         iLayoutPropertyCache->iMarginRight :
  8783         NULL;
  8068         NULL;
  8784     return PropertyL( this, property, &CXnNode::MarginRightL,
  8069     return PropertyL( property, &CXnNode::MarginRightL,
  8785         iUiEngine, iLayoutPropertyCache,
  8070         iLayoutPropertyCache, iParent );
  8786         iParent, iRef );
       
  8787     }
  8071     }
  8788 
  8072 
  8789 // -----------------------------------------------------------------------------
  8073 // -----------------------------------------------------------------------------
  8790 // CXnNodeImpl::BorderLeftL
  8074 // CXnNodeImpl::BorderLeftL
  8791 // Returns border-left property.
  8075 // Returns border-left property.
  8792 // -----------------------------------------------------------------------------
  8076 // -----------------------------------------------------------------------------
  8793 //
  8077 //
  8794 CXnProperty* CXnNodeImpl::BorderLeftL()
  8078 CXnProperty* CXnNodeImpl::BorderLeftL()
  8795     {
  8079     {
  8796     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  8797     if ( refNode )
       
  8798         {
       
  8799         RPointerArray< CXnProperty >* propertyArray =
       
  8800             refNode->Impl()->iLayoutPropertyCache ?
       
  8801             &( refNode->Impl()->iLayoutPropertyCache->iBorderLefts ) :
       
  8802             NULL;
       
  8803         return ReferredPropertyL( propertyArray, iStates );
       
  8804         }
       
  8805     CXnProperty* property = iLayoutPropertyCache ?
  8080     CXnProperty* property = iLayoutPropertyCache ?
  8806         iLayoutPropertyCache->iBorderLeft :
  8081         iLayoutPropertyCache->iBorderLeft :
  8807         NULL;
  8082         NULL;
  8808     return PropertyL( this, property, &CXnNode::BorderLeftL,
  8083     return PropertyL( property, &CXnNode::BorderLeftL,
  8809         iUiEngine, iLayoutPropertyCache,
  8084         iLayoutPropertyCache, iParent );
  8810         iParent, iRef );
       
  8811     }
  8085     }
  8812 
  8086 
  8813 // -----------------------------------------------------------------------------
  8087 // -----------------------------------------------------------------------------
  8814 // CXnNodeImpl::BorderRightL
  8088 // CXnNodeImpl::BorderRightL
  8815 // Returns border-right property.
  8089 // Returns border-right property.
  8816 // -----------------------------------------------------------------------------
  8090 // -----------------------------------------------------------------------------
  8817 //
  8091 //
  8818 CXnProperty* CXnNodeImpl::BorderRightL()
  8092 CXnProperty* CXnNodeImpl::BorderRightL()
  8819     {
  8093     {
  8820     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  8821     if ( refNode )
       
  8822         {
       
  8823         RPointerArray< CXnProperty >* propertyArray =
       
  8824             refNode->Impl()->iLayoutPropertyCache ?
       
  8825             &( refNode->Impl()->iLayoutPropertyCache->iBorderRights ) :
       
  8826             NULL;
       
  8827         return ReferredPropertyL( propertyArray, iStates );
       
  8828         }
       
  8829     CXnProperty* property =
  8094     CXnProperty* property =
  8830         iLayoutPropertyCache ?
  8095         iLayoutPropertyCache ?
  8831         iLayoutPropertyCache->iBorderRight :
  8096         iLayoutPropertyCache->iBorderRight :
  8832         NULL;
  8097         NULL;
  8833     return PropertyL( this, property, &CXnNode::BorderRightL,
  8098     return PropertyL( property, &CXnNode::BorderRightL,
  8834         iUiEngine, iLayoutPropertyCache,
  8099         iLayoutPropertyCache, iParent );
  8835         iParent, iRef );
       
  8836     }
  8100     }
  8837 
  8101 
  8838 // -----------------------------------------------------------------------------
  8102 // -----------------------------------------------------------------------------
  8839 // CXnNodeImpl::PaddingLeftL
  8103 // CXnNodeImpl::PaddingLeftL
  8840 // Returns padding-left property.
  8104 // Returns padding-left property.
  8841 // -----------------------------------------------------------------------------
  8105 // -----------------------------------------------------------------------------
  8842 //
  8106 //
  8843 CXnProperty* CXnNodeImpl::PaddingLeftL()
  8107 CXnProperty* CXnNodeImpl::PaddingLeftL()
  8844     {
  8108     {
  8845     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  8846     if ( refNode )
       
  8847         {
       
  8848         RPointerArray< CXnProperty >* propertyArray =
       
  8849             refNode->Impl()->iLayoutPropertyCache ?
       
  8850             &( refNode->Impl()->iLayoutPropertyCache->iPaddingLefts ) :
       
  8851             NULL;
       
  8852         return ReferredPropertyL( propertyArray, iStates );
       
  8853         }
       
  8854     CXnProperty* property =
  8109     CXnProperty* property =
  8855         iLayoutPropertyCache ?
  8110         iLayoutPropertyCache ?
  8856         iLayoutPropertyCache->iPaddingLeft :
  8111         iLayoutPropertyCache->iPaddingLeft :
  8857         NULL;
  8112         NULL;
  8858     return PropertyL( this, property, &CXnNode::PaddingLeftL,
  8113     return PropertyL( property, &CXnNode::PaddingLeftL,
  8859         iUiEngine, iLayoutPropertyCache,
  8114         iLayoutPropertyCache, iParent );
  8860         iParent, iRef );
       
  8861     }
  8115     }
  8862 
  8116 
  8863 // -----------------------------------------------------------------------------
  8117 // -----------------------------------------------------------------------------
  8864 // CXnNodeImpl::PaddingRightL
  8118 // CXnNodeImpl::PaddingRightL
  8865 // Returns PaddingRightL property.
  8119 // Returns PaddingRightL property.
  8866 // -----------------------------------------------------------------------------
  8120 // -----------------------------------------------------------------------------
  8867 //
  8121 //
  8868 CXnProperty* CXnNodeImpl::PaddingRightL()
  8122 CXnProperty* CXnNodeImpl::PaddingRightL()
  8869     {
  8123     {
  8870     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  8871     if ( refNode )
       
  8872         {
       
  8873         RPointerArray< CXnProperty >* propertyArray =
       
  8874             refNode->Impl()->iLayoutPropertyCache ?
       
  8875             &( refNode->Impl()->iLayoutPropertyCache->iPaddingRights ) :
       
  8876             NULL;
       
  8877         return ReferredPropertyL( propertyArray, iStates );
       
  8878         }
       
  8879     CXnProperty* property =
  8124     CXnProperty* property =
  8880         iLayoutPropertyCache ? iLayoutPropertyCache->iPaddingRight : NULL;
  8125         iLayoutPropertyCache ? iLayoutPropertyCache->iPaddingRight : NULL;
  8881     return PropertyL( this, property, &CXnNode::PaddingRightL,
  8126     return PropertyL( property, &CXnNode::PaddingRightL,
  8882         iUiEngine, iLayoutPropertyCache,
  8127         iLayoutPropertyCache, iParent );
  8883         iParent, iRef );
       
  8884     }
  8128     }
  8885 
  8129 
  8886 // -----------------------------------------------------------------------------
  8130 // -----------------------------------------------------------------------------
  8887 // CXnNodeImpl::MarginTopL
  8131 // CXnNodeImpl::MarginTopL
  8888 // Returns margin-top property.
  8132 // Returns margin-top property.
  8889 // -----------------------------------------------------------------------------
  8133 // -----------------------------------------------------------------------------
  8890 //
  8134 //
  8891 CXnProperty* CXnNodeImpl::MarginTopL()
  8135 CXnProperty* CXnNodeImpl::MarginTopL()
  8892     {
  8136     {
  8893     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  8894     if ( refNode )
       
  8895         {
       
  8896         RPointerArray< CXnProperty >* propertyArray =
       
  8897             refNode->Impl()->iLayoutPropertyCache ?
       
  8898             &( refNode->Impl()->iLayoutPropertyCache->iMarginTops ) :
       
  8899             NULL;
       
  8900         return ReferredPropertyL( propertyArray, iStates );
       
  8901         }
       
  8902     CXnProperty* property =
  8137     CXnProperty* property =
  8903         iLayoutPropertyCache ? iLayoutPropertyCache->iMarginTop : NULL;
  8138         iLayoutPropertyCache ? iLayoutPropertyCache->iMarginTop : NULL;
  8904     return PropertyL( this, property, &CXnNode::MarginTopL,
  8139     return PropertyL( property, &CXnNode::MarginTopL,
  8905         iUiEngine, iLayoutPropertyCache,
  8140         iLayoutPropertyCache, iParent );
  8906         iParent, iRef );
       
  8907     }
  8141     }
  8908 
  8142 
  8909 // -----------------------------------------------------------------------------
  8143 // -----------------------------------------------------------------------------
  8910 // CXnNodeImpl::MarginBottomL
  8144 // CXnNodeImpl::MarginBottomL
  8911 // Returns margin-bottom property.
  8145 // Returns margin-bottom property.
  8912 // -----------------------------------------------------------------------------
  8146 // -----------------------------------------------------------------------------
  8913 //
  8147 //
  8914 CXnProperty* CXnNodeImpl::MarginBottomL()
  8148 CXnProperty* CXnNodeImpl::MarginBottomL()
  8915     {
  8149     {
  8916     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  8917     if ( refNode )
       
  8918         {
       
  8919         RPointerArray< CXnProperty >* propertyArray =
       
  8920             refNode->Impl()->iLayoutPropertyCache ?
       
  8921             &( refNode->Impl()->iLayoutPropertyCache->iMarginBottoms ) :
       
  8922             NULL;
       
  8923         return ReferredPropertyL( propertyArray, iStates );
       
  8924         }
       
  8925     CXnProperty* property =
  8150     CXnProperty* property =
  8926         iLayoutPropertyCache ? iLayoutPropertyCache->iMarginBottom : NULL;
  8151         iLayoutPropertyCache ? iLayoutPropertyCache->iMarginBottom : NULL;
  8927     return PropertyL( this, property, &CXnNode::MarginBottomL,
  8152     return PropertyL( property, &CXnNode::MarginBottomL,
  8928         iUiEngine, iLayoutPropertyCache,
  8153         iLayoutPropertyCache, iParent );
  8929         iParent, iRef );
       
  8930     }
  8154     }
  8931 
  8155 
  8932 // -----------------------------------------------------------------------------
  8156 // -----------------------------------------------------------------------------
  8933 // CXnNodeImpl::BorderTopL
  8157 // CXnNodeImpl::BorderTopL
  8934 // Returns border-top property.
  8158 // Returns border-top property.
  8935 // -----------------------------------------------------------------------------
  8159 // -----------------------------------------------------------------------------
  8936 //
  8160 //
  8937 CXnProperty* CXnNodeImpl::BorderTopL()
  8161 CXnProperty* CXnNodeImpl::BorderTopL()
  8938     {
  8162     {
  8939     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  8940     if ( refNode )
       
  8941         {
       
  8942         RPointerArray< CXnProperty >* propertyArray =
       
  8943             refNode->Impl()->iLayoutPropertyCache ?
       
  8944             &( refNode->Impl()->iLayoutPropertyCache->iBorderTops ) :
       
  8945             NULL;
       
  8946         return ReferredPropertyL( propertyArray, iStates );
       
  8947         }
       
  8948     CXnProperty* property =
  8163     CXnProperty* property =
  8949         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderTop : NULL;
  8164         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderTop : NULL;
  8950     return PropertyL( this, property, &CXnNode::BorderTopL,
  8165     return PropertyL( property, &CXnNode::BorderTopL,
  8951         iUiEngine, iLayoutPropertyCache,
  8166         iLayoutPropertyCache, iParent );
  8952         iParent, iRef );
       
  8953     }
  8167     }
  8954 
  8168 
  8955 // -----------------------------------------------------------------------------
  8169 // -----------------------------------------------------------------------------
  8956 // CXnNodeImpl::BorderBottomL
  8170 // CXnNodeImpl::BorderBottomL
  8957 // Returns border-bottom property.
  8171 // Returns border-bottom property.
  8958 // -----------------------------------------------------------------------------
  8172 // -----------------------------------------------------------------------------
  8959 //
  8173 //
  8960 CXnProperty* CXnNodeImpl::BorderBottomL()
  8174 CXnProperty* CXnNodeImpl::BorderBottomL()
  8961     {
  8175     {
  8962     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  8963     if ( refNode )
       
  8964         {
       
  8965         RPointerArray< CXnProperty >* propertyArray =
       
  8966             refNode->Impl()->iLayoutPropertyCache ?
       
  8967             &( refNode->Impl()->iLayoutPropertyCache->iBorderBottoms ) :
       
  8968             NULL;
       
  8969         return ReferredPropertyL( propertyArray, iStates );
       
  8970         }
       
  8971     CXnProperty* property =
  8176     CXnProperty* property =
  8972         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderBottom : NULL;
  8177         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderBottom : NULL;
  8973     return PropertyL( this, property, &CXnNode::BorderBottomL,
  8178     return PropertyL( property, &CXnNode::BorderBottomL,
  8974         iUiEngine, iLayoutPropertyCache,
  8179         iLayoutPropertyCache, iParent );
  8975         iParent, iRef );
       
  8976     }
  8180     }
  8977 
  8181 
  8978 // -----------------------------------------------------------------------------
  8182 // -----------------------------------------------------------------------------
  8979 // CXnNodeImpl::PaddingTopL
  8183 // CXnNodeImpl::PaddingTopL
  8980 // Returns padding-top property.
  8184 // Returns padding-top property.
  8981 // -----------------------------------------------------------------------------
  8185 // -----------------------------------------------------------------------------
  8982 //
  8186 //
  8983 CXnProperty* CXnNodeImpl::PaddingTopL()
  8187 CXnProperty* CXnNodeImpl::PaddingTopL()
  8984     {
  8188     {
  8985     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  8986     if ( refNode )
       
  8987         {
       
  8988         RPointerArray< CXnProperty >* propertyArray =
       
  8989             refNode->Impl()->iLayoutPropertyCache ?
       
  8990             &( refNode->Impl()->iLayoutPropertyCache->iPaddingTops ) :
       
  8991             NULL;
       
  8992         return ReferredPropertyL( propertyArray, iStates );
       
  8993         }
       
  8994     CXnProperty* property =
  8189     CXnProperty* property =
  8995         iLayoutPropertyCache ? iLayoutPropertyCache->iPaddingTop : NULL;
  8190         iLayoutPropertyCache ? iLayoutPropertyCache->iPaddingTop : NULL;
  8996     return PropertyL( this, property, &CXnNode::PaddingTopL,
  8191     return PropertyL( property, &CXnNode::PaddingTopL,
  8997         iUiEngine, iLayoutPropertyCache,
  8192         iLayoutPropertyCache, iParent );
  8998         iParent, iRef );
       
  8999     }
  8193     }
  9000 
  8194 
  9001 // -----------------------------------------------------------------------------
  8195 // -----------------------------------------------------------------------------
  9002 // CXnNodeImpl::PaddingBottomL
  8196 // CXnNodeImpl::PaddingBottomL
  9003 // Returns padding-bottom property.
  8197 // Returns padding-bottom property.
  9004 // -----------------------------------------------------------------------------
  8198 // -----------------------------------------------------------------------------
  9005 //
  8199 //
  9006 CXnProperty* CXnNodeImpl::PaddingBottomL()
  8200 CXnProperty* CXnNodeImpl::PaddingBottomL()
  9007     {
  8201     {
  9008     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9009     if ( refNode )
       
  9010         {
       
  9011         RPointerArray< CXnProperty >* propertyArray =
       
  9012             refNode->Impl()->iLayoutPropertyCache ?
       
  9013             &( refNode->Impl()->iLayoutPropertyCache->iPaddingBottoms ) :
       
  9014             NULL;
       
  9015         return ReferredPropertyL( propertyArray, iStates );
       
  9016         }
       
  9017     CXnProperty* property =
  8202     CXnProperty* property =
  9018         iLayoutPropertyCache ? iLayoutPropertyCache->iPaddingBottom : NULL;
  8203         iLayoutPropertyCache ? iLayoutPropertyCache->iPaddingBottom : NULL;
  9019     return PropertyL( this, property, &CXnNode::PaddingBottomL,
  8204     return PropertyL( property, &CXnNode::PaddingBottomL,
  9020         iUiEngine, iLayoutPropertyCache,
  8205         iLayoutPropertyCache, iParent );
  9021         iParent, iRef );
       
  9022     }
  8206     }
  9023 
  8207 
  9024 // -----------------------------------------------------------------------------
  8208 // -----------------------------------------------------------------------------
  9025 // CXnNodeImpl::BorderWidthL
  8209 // CXnNodeImpl::BorderWidthL
  9026 // Returns border-width property.
  8210 // Returns border-width property.
  9027 // -----------------------------------------------------------------------------
  8211 // -----------------------------------------------------------------------------
  9028 //
  8212 //
  9029 CXnProperty* CXnNodeImpl::BorderWidthL()
  8213 CXnProperty* CXnNodeImpl::BorderWidthL()
  9030     {
  8214     {
  9031     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9032     if ( refNode )
       
  9033         {
       
  9034         RPointerArray< CXnProperty >* propertyArray =
       
  9035             refNode->Impl()->iLayoutPropertyCache ?
       
  9036             &( refNode->Impl()->iLayoutPropertyCache->iBorderWidths ) :
       
  9037             NULL;
       
  9038         return ReferredPropertyL( propertyArray, iStates );
       
  9039         }
       
  9040     CXnProperty* property =
  8215     CXnProperty* property =
  9041         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderWidth : NULL;
  8216         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderWidth : NULL;
  9042     return PropertyL( this, property, &CXnNode::BorderWidthL,
  8217     return PropertyL( property, &CXnNode::BorderWidthL,
  9043         iUiEngine, iLayoutPropertyCache,
  8218         iLayoutPropertyCache, iParent );
  9044         iParent, iRef );
       
  9045     }
  8219     }
  9046 
  8220 
  9047 // -----------------------------------------------------------------------------
  8221 // -----------------------------------------------------------------------------
  9048 // CXnNodeImpl::BlockProgressionL
  8222 // CXnNodeImpl::BlockProgressionL
  9049 // Returns block-progression property.
  8223 // Returns block-progression property.
  9050 // -----------------------------------------------------------------------------
  8224 // -----------------------------------------------------------------------------
  9051 //
  8225 //
  9052 CXnProperty* CXnNodeImpl::BlockProgressionL()
  8226 CXnProperty* CXnNodeImpl::BlockProgressionL()
  9053     {
  8227     {
  9054     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9055     if ( refNode )
       
  9056         {
       
  9057         RPointerArray< CXnProperty >* propertyArray =
       
  9058             refNode->Impl()->iLayoutPropertyCache ?
       
  9059             &( refNode->Impl()->iLayoutPropertyCache->iBlockProgressions ) :
       
  9060             NULL;
       
  9061         return ReferredPropertyL( propertyArray, iStates );
       
  9062         }
       
  9063     CXnProperty* property =
  8228     CXnProperty* property =
  9064         iLayoutPropertyCache ? iLayoutPropertyCache->iBlockProgression : NULL;
  8229         iLayoutPropertyCache ? iLayoutPropertyCache->iBlockProgression : NULL;
  9065     return PropertyL( this, property, &CXnNode::BlockProgressionL,
  8230     return PropertyL( property, &CXnNode::BlockProgressionL,
  9066         iUiEngine, iLayoutPropertyCache,
  8231         iLayoutPropertyCache, iParent );
  9067         iParent, iRef );
       
  9068     }
  8232     }
  9069 
  8233 
  9070 // -----------------------------------------------------------------------------
  8234 // -----------------------------------------------------------------------------
  9071 // CXnNodeImpl::DirectionL
  8235 // CXnNodeImpl::DirectionL
  9072 // Returns direction property.
  8236 // Returns direction property.
  9073 // -----------------------------------------------------------------------------
  8237 // -----------------------------------------------------------------------------
  9074 //
  8238 //
  9075 CXnProperty* CXnNodeImpl::DirectionL()
  8239 CXnProperty* CXnNodeImpl::DirectionL()
  9076     {
  8240     {
  9077     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9078     if ( refNode )
       
  9079         {
       
  9080         RPointerArray< CXnProperty >* propertyArray =
       
  9081             refNode->Impl()->iLayoutPropertyCache ?
       
  9082             &( refNode->Impl()->iLayoutPropertyCache->iDirections ) :
       
  9083             NULL;
       
  9084         return ReferredPropertyL( propertyArray, iStates );
       
  9085         }
       
  9086     CXnProperty* property =
  8241     CXnProperty* property =
  9087         iLayoutPropertyCache ? iLayoutPropertyCache->iDirection : NULL;
  8242         iLayoutPropertyCache ? iLayoutPropertyCache->iDirection : NULL;
  9088     return PropertyL( this, property, &CXnNode::DirectionL,
  8243     return PropertyL( property, &CXnNode::DirectionL,
  9089         iUiEngine, iLayoutPropertyCache,
  8244         iLayoutPropertyCache, iParent );
  9090         iParent, iRef );
       
  9091     }
  8245     }
  9092 
  8246 
  9093 // -----------------------------------------------------------------------------
  8247 // -----------------------------------------------------------------------------
  9094 // CXnNodeImpl::PositionL
  8248 // CXnNodeImpl::PositionL
  9095 // Returns position property.
  8249 // Returns position property.
  9096 // -----------------------------------------------------------------------------
  8250 // -----------------------------------------------------------------------------
  9097 //
  8251 //
  9098 CXnProperty* CXnNodeImpl::PositionL()
  8252 CXnProperty* CXnNodeImpl::PositionL()
  9099     {
  8253     {
  9100     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9101     if ( refNode )
       
  9102         {
       
  9103         RPointerArray< CXnProperty >* propertyArray =
       
  9104             refNode->Impl()->iLayoutPropertyCache ?
       
  9105             &( refNode->Impl()->iLayoutPropertyCache->iPositions ) :
       
  9106             NULL;
       
  9107         return ReferredPropertyL( propertyArray, iStates );
       
  9108         }
       
  9109     CXnProperty* property =
  8254     CXnProperty* property =
  9110         iLayoutPropertyCache ? iLayoutPropertyCache->iPosition : NULL;
  8255         iLayoutPropertyCache ? iLayoutPropertyCache->iPosition : NULL;
  9111     return PropertyL( this, property, &CXnNode::PositionL,
  8256     return PropertyL( property, &CXnNode::PositionL,
  9112         iUiEngine, iLayoutPropertyCache,
  8257         iLayoutPropertyCache, iParent );
  9113         iParent, iRef );
       
  9114     }
  8258     }
  9115 
  8259 
  9116 // -----------------------------------------------------------------------------
  8260 // -----------------------------------------------------------------------------
  9117 // CXnNodeImpl::MaxHeightL
  8261 // CXnNodeImpl::MaxHeightL
  9118 // Returns max-height property.
  8262 // Returns max-height property.
  9119 // -----------------------------------------------------------------------------
  8263 // -----------------------------------------------------------------------------
  9120 //
  8264 //
  9121 CXnProperty* CXnNodeImpl::MaxHeightL()
  8265 CXnProperty* CXnNodeImpl::MaxHeightL()
  9122     {
  8266     {
  9123     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9124     if ( refNode )
       
  9125         {
       
  9126         RPointerArray< CXnProperty >* propertyArray =
       
  9127             refNode->Impl()->iLayoutPropertyCache ?
       
  9128             &( refNode->Impl()->iLayoutPropertyCache->iMaxHeights ) :
       
  9129             NULL;
       
  9130         return ReferredPropertyL( propertyArray, iStates );
       
  9131         }
       
  9132     CXnProperty* property =
  8267     CXnProperty* property =
  9133         iLayoutPropertyCache ? iLayoutPropertyCache->iMaxHeight : NULL;
  8268         iLayoutPropertyCache ? iLayoutPropertyCache->iMaxHeight : NULL;
  9134     return PropertyL( this, property, &CXnNode::MaxHeightL,
  8269     return PropertyL( property, &CXnNode::MaxHeightL,
  9135         iUiEngine, iLayoutPropertyCache,
  8270         iLayoutPropertyCache, iParent );
  9136         iParent, iRef );
       
  9137     }
  8271     }
  9138 
  8272 
  9139 // -----------------------------------------------------------------------------
  8273 // -----------------------------------------------------------------------------
  9140 // CXnNodeImpl::MinHeightL
  8274 // CXnNodeImpl::MinHeightL
  9141 // Returns min-height property.
  8275 // Returns min-height property.
  9142 // -----------------------------------------------------------------------------
  8276 // -----------------------------------------------------------------------------
  9143 //
  8277 //
  9144 CXnProperty* CXnNodeImpl::MinHeightL()
  8278 CXnProperty* CXnNodeImpl::MinHeightL()
  9145     {
  8279     {
  9146     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9147     if ( refNode )
       
  9148         {
       
  9149         RPointerArray< CXnProperty >* propertyArray =
       
  9150             refNode->Impl()->iLayoutPropertyCache ?
       
  9151             &( refNode->Impl()->iLayoutPropertyCache->iMinHeights ) :
       
  9152             NULL;
       
  9153         return ReferredPropertyL( propertyArray, iStates );
       
  9154         }
       
  9155     CXnProperty* property =
  8280     CXnProperty* property =
  9156         iLayoutPropertyCache ? iLayoutPropertyCache->iMinHeight : NULL;
  8281         iLayoutPropertyCache ? iLayoutPropertyCache->iMinHeight : NULL;
  9157     return PropertyL( this, property, &CXnNode::MinHeightL,
  8282     return PropertyL( property, &CXnNode::MinHeightL,
  9158         iUiEngine, iLayoutPropertyCache,
  8283         iLayoutPropertyCache, iParent );
  9159         iParent, iRef );
       
  9160     }
  8284     }
  9161 
  8285 
  9162 // -----------------------------------------------------------------------------
  8286 // -----------------------------------------------------------------------------
  9163 // CXnNodeImpl::MaxWidthL
  8287 // CXnNodeImpl::MaxWidthL
  9164 // Returns max-width property.
  8288 // Returns max-width property.
  9165 // -----------------------------------------------------------------------------
  8289 // -----------------------------------------------------------------------------
  9166 //
  8290 //
  9167 CXnProperty* CXnNodeImpl::MaxWidthL()
  8291 CXnProperty* CXnNodeImpl::MaxWidthL()
  9168     {
  8292     {
  9169     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9170     if ( refNode )
       
  9171         {
       
  9172         RPointerArray< CXnProperty >* propertyArray =
       
  9173             refNode->Impl()->iLayoutPropertyCache ?
       
  9174             &( refNode->Impl()->iLayoutPropertyCache->iMaxWidths ) :
       
  9175             NULL;
       
  9176         return ReferredPropertyL( propertyArray, iStates );
       
  9177         }
       
  9178     CXnProperty* property =
  8293     CXnProperty* property =
  9179         iLayoutPropertyCache ? iLayoutPropertyCache->iMaxWidth : NULL;
  8294         iLayoutPropertyCache ? iLayoutPropertyCache->iMaxWidth : NULL;
  9180     return PropertyL( this, property, &CXnNode::MaxWidthL,
  8295     return PropertyL( property, &CXnNode::MaxWidthL,
  9181         iUiEngine, iLayoutPropertyCache,
  8296         iLayoutPropertyCache, iParent );
  9182         iParent, iRef );
       
  9183     }
  8297     }
  9184 
  8298 
  9185 // -----------------------------------------------------------------------------
  8299 // -----------------------------------------------------------------------------
  9186 // CXnNodeImpl::MinWidthL
  8300 // CXnNodeImpl::MinWidthL
  9187 // Returns min-width property.
  8301 // Returns min-width property.
  9188 // -----------------------------------------------------------------------------
  8302 // -----------------------------------------------------------------------------
  9189 //
  8303 //
  9190 CXnProperty* CXnNodeImpl::MinWidthL()
  8304 CXnProperty* CXnNodeImpl::MinWidthL()
  9191     {
  8305     {
  9192     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9193     if ( refNode )
       
  9194         {
       
  9195         RPointerArray< CXnProperty >* propertyArray =
       
  9196             refNode->Impl()->iLayoutPropertyCache ?
       
  9197             &( refNode->Impl()->iLayoutPropertyCache->iMinWidths ) :
       
  9198             NULL;
       
  9199         return ReferredPropertyL( propertyArray, iStates );
       
  9200         }
       
  9201     CXnProperty* property =
  8306     CXnProperty* property =
  9202         iLayoutPropertyCache ? iLayoutPropertyCache->iMinWidth : NULL;
  8307         iLayoutPropertyCache ? iLayoutPropertyCache->iMinWidth : NULL;
  9203     return PropertyL( this, property, &CXnNode::MinWidthL,
  8308     return PropertyL( property, &CXnNode::MinWidthL,
  9204         iUiEngine, iLayoutPropertyCache,
  8309         iLayoutPropertyCache, iParent );
  9205         iParent, iRef );
       
  9206     }
  8310     }
  9207 
  8311 
  9208 // -----------------------------------------------------------------------------
  8312 // -----------------------------------------------------------------------------
  9209 // CXnNodeImpl::DisplayL
  8313 // CXnNodeImpl::DisplayL
  9210 // Returns display property.
  8314 // Returns display property.
  9211 // -----------------------------------------------------------------------------
  8315 // -----------------------------------------------------------------------------
  9212 //
  8316 //
  9213 CXnProperty* CXnNodeImpl::DisplayL()
  8317 CXnProperty* CXnNodeImpl::DisplayL()
  9214     {
  8318     {
  9215     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9216     if ( refNode )
       
  9217         {
       
  9218         RPointerArray< CXnProperty >* propertyArray =
       
  9219             refNode->Impl()->iLayoutPropertyCache ?
       
  9220             &( refNode->Impl()->iLayoutPropertyCache->iDisplays ) :
       
  9221             NULL;
       
  9222         return ReferredPropertyL( propertyArray, iStates );
       
  9223         }
       
  9224     CXnProperty* property =
  8319     CXnProperty* property =
  9225         iLayoutPropertyCache ? iLayoutPropertyCache->iDisplay : NULL;
  8320         iLayoutPropertyCache ? iLayoutPropertyCache->iDisplay : NULL;
  9226     return PropertyL( this, property, &CXnNode::DisplayL,
  8321     return PropertyL( property, &CXnNode::DisplayL,
  9227         iUiEngine, iLayoutPropertyCache,
  8322         iLayoutPropertyCache, iParent );
  9228         iParent, iRef );
       
  9229     }
  8323     }
  9230 
  8324 
  9231 // -----------------------------------------------------------------------------
  8325 // -----------------------------------------------------------------------------
  9232 // CXnNodeImpl::LeftL
  8326 // CXnNodeImpl::LeftL
  9233 // Returns left property.
  8327 // Returns left property.
  9234 // -----------------------------------------------------------------------------
  8328 // -----------------------------------------------------------------------------
  9235 //
  8329 //
  9236 CXnProperty* CXnNodeImpl::LeftL()
  8330 CXnProperty* CXnNodeImpl::LeftL()
  9237     {
  8331     {
  9238     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9239     if ( refNode )
       
  9240         {
       
  9241         RPointerArray< CXnProperty >* propertyArray =
       
  9242             refNode->Impl()->iLayoutPropertyCache ?
       
  9243             &( refNode->Impl()->iLayoutPropertyCache->iLefts ) :
       
  9244             NULL;
       
  9245         return ReferredPropertyL( propertyArray, iStates );
       
  9246         }
       
  9247     CXnProperty* property =
  8332     CXnProperty* property =
  9248         iLayoutPropertyCache ? iLayoutPropertyCache->iLeft : NULL;
  8333         iLayoutPropertyCache ? iLayoutPropertyCache->iLeft : NULL;
  9249     return PropertyL( this, property, &CXnNode::LeftL,
  8334     return PropertyL( property, &CXnNode::LeftL,
  9250         iUiEngine, iLayoutPropertyCache,
  8335         iLayoutPropertyCache, iParent );
  9251         iParent, iRef );
       
  9252     }
  8336     }
  9253 
  8337 
  9254 // -----------------------------------------------------------------------------
  8338 // -----------------------------------------------------------------------------
  9255 // CXnNodeImpl::RightL
  8339 // CXnNodeImpl::RightL
  9256 // Returns right property.
  8340 // Returns right property.
  9257 // -----------------------------------------------------------------------------
  8341 // -----------------------------------------------------------------------------
  9258 //
  8342 //
  9259 CXnProperty* CXnNodeImpl::RightL()
  8343 CXnProperty* CXnNodeImpl::RightL()
  9260     {
  8344     {
  9261     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9262     if ( refNode )
       
  9263         {
       
  9264         RPointerArray< CXnProperty >* propertyArray =
       
  9265             refNode->Impl()->iLayoutPropertyCache ?
       
  9266             &( refNode->Impl()->iLayoutPropertyCache->iRights ) :
       
  9267             NULL;
       
  9268         return ReferredPropertyL( propertyArray, iStates );
       
  9269         }
       
  9270     CXnProperty* property =
  8345     CXnProperty* property =
  9271         iLayoutPropertyCache ? iLayoutPropertyCache->iRight : NULL;
  8346         iLayoutPropertyCache ? iLayoutPropertyCache->iRight : NULL;
  9272     return PropertyL( this, property, &CXnNode::RightL,
  8347     return PropertyL( property, &CXnNode::RightL,
  9273         iUiEngine, iLayoutPropertyCache,
  8348         iLayoutPropertyCache, iParent );
  9274         iParent, iRef );
       
  9275     }
  8349     }
  9276 
  8350 
  9277 // -----------------------------------------------------------------------------
  8351 // -----------------------------------------------------------------------------
  9278 // CXnNodeImpl::TopL
  8352 // CXnNodeImpl::TopL
  9279 // Returns top property.
  8353 // Returns top property.
  9280 // -----------------------------------------------------------------------------
  8354 // -----------------------------------------------------------------------------
  9281 //
  8355 //
  9282 CXnProperty* CXnNodeImpl::TopL()
  8356 CXnProperty* CXnNodeImpl::TopL()
  9283     {
  8357     {
  9284     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9285     if ( refNode )
       
  9286         {
       
  9287         RPointerArray< CXnProperty >* propertyArray =
       
  9288             refNode->Impl()->iLayoutPropertyCache ?
       
  9289             &( refNode->Impl()->iLayoutPropertyCache->iTops ) :
       
  9290             NULL;
       
  9291         return ReferredPropertyL( propertyArray, iStates );
       
  9292         }
       
  9293     CXnProperty* property =
  8358     CXnProperty* property =
  9294         iLayoutPropertyCache ? iLayoutPropertyCache->iTop : NULL;
  8359         iLayoutPropertyCache ? iLayoutPropertyCache->iTop : NULL;
  9295     return PropertyL( this, property, &CXnNode::TopL,
  8360     return PropertyL( property, &CXnNode::TopL,
  9296         iUiEngine, iLayoutPropertyCache,
  8361         iLayoutPropertyCache, iParent );
  9297         iParent, iRef );
       
  9298     }
  8362     }
  9299 
  8363 
  9300 // -----------------------------------------------------------------------------
  8364 // -----------------------------------------------------------------------------
  9301 // CXnNodeImpl::BottomL
  8365 // CXnNodeImpl::BottomL
  9302 // Returns bottom property.
  8366 // Returns bottom property.
  9303 // -----------------------------------------------------------------------------
  8367 // -----------------------------------------------------------------------------
  9304 //
  8368 //
  9305 CXnProperty* CXnNodeImpl::BottomL()
  8369 CXnProperty* CXnNodeImpl::BottomL()
  9306     {
  8370     {
  9307     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9308     if ( refNode )
       
  9309         {
       
  9310         RPointerArray< CXnProperty >* propertyArray =
       
  9311             refNode->Impl()->iLayoutPropertyCache ?
       
  9312             &( refNode->Impl()->iLayoutPropertyCache->iBottoms ) :
       
  9313             NULL;
       
  9314         return ReferredPropertyL( propertyArray, iStates );
       
  9315         }
       
  9316     CXnProperty* property =
  8371     CXnProperty* property =
  9317         iLayoutPropertyCache ? iLayoutPropertyCache->iBottom : NULL;
  8372         iLayoutPropertyCache ? iLayoutPropertyCache->iBottom : NULL;
  9318     return PropertyL( this, property, &CXnNode::BottomL,
  8373     return PropertyL( property, &CXnNode::BottomL,
  9319         iUiEngine, iLayoutPropertyCache,
  8374         iLayoutPropertyCache, iParent );
  9320         iParent, iRef );
       
  9321     }
  8375     }
  9322 
  8376 
  9323 // -----------------------------------------------------------------------------
  8377 // -----------------------------------------------------------------------------
  9324 // CXnNodeImpl::BorderLeftStyleL
  8378 // CXnNodeImpl::BorderLeftStyleL
  9325 // Returns border-left-style property.
  8379 // Returns border-left-style property.
  9326 // -----------------------------------------------------------------------------
  8380 // -----------------------------------------------------------------------------
  9327 //
  8381 //
  9328 CXnProperty* CXnNodeImpl::BorderLeftStyleL()
  8382 CXnProperty* CXnNodeImpl::BorderLeftStyleL()
  9329     {
  8383     {
  9330     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9331     if ( refNode )
       
  9332         {
       
  9333         RPointerArray< CXnProperty >* propertyArray =
       
  9334             refNode->Impl()->iLayoutPropertyCache ?
       
  9335             &( refNode->Impl()->iLayoutPropertyCache->iBorderLeftStyles ) :
       
  9336             NULL;
       
  9337         return ReferredPropertyL( propertyArray, iStates );
       
  9338         }
       
  9339     CXnProperty* property =
  8384     CXnProperty* property =
  9340         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderLeftStyle : NULL;
  8385         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderLeftStyle : NULL;
  9341     return PropertyL( this, property, &CXnNode::BorderLeftStyleL,
  8386     return PropertyL( property, &CXnNode::BorderLeftStyleL,
  9342         iUiEngine, iLayoutPropertyCache,
  8387         iLayoutPropertyCache, iParent );
  9343         iParent, iRef );
       
  9344     }
  8388     }
  9345 
  8389 
  9346 // -----------------------------------------------------------------------------
  8390 // -----------------------------------------------------------------------------
  9347 // CXnNodeImpl::BorderRightStyleL
  8391 // CXnNodeImpl::BorderRightStyleL
  9348 // Returns border-right-style property.
  8392 // Returns border-right-style property.
  9349 // -----------------------------------------------------------------------------
  8393 // -----------------------------------------------------------------------------
  9350 //
  8394 //
  9351 CXnProperty* CXnNodeImpl::BorderRightStyleL()
  8395 CXnProperty* CXnNodeImpl::BorderRightStyleL()
  9352     {
  8396     {
  9353     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9354     if ( refNode )
       
  9355         {
       
  9356         RPointerArray< CXnProperty >* propertyArray =
       
  9357             refNode->Impl()->iLayoutPropertyCache ?
       
  9358             &( refNode->Impl()->iLayoutPropertyCache->iBorderRightStyles ) :
       
  9359             NULL;
       
  9360         return ReferredPropertyL( propertyArray, iStates );
       
  9361         }
       
  9362     CXnProperty* property =
  8397     CXnProperty* property =
  9363         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderRightStyle : NULL;
  8398         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderRightStyle : NULL;
  9364     return PropertyL( this, property, &CXnNode::BorderRightStyleL,
  8399     return PropertyL( property, &CXnNode::BorderRightStyleL,
  9365         iUiEngine, iLayoutPropertyCache,
  8400         iLayoutPropertyCache, iParent );
  9366         iParent, iRef );
       
  9367     }
  8401     }
  9368 
  8402 
  9369 // -----------------------------------------------------------------------------
  8403 // -----------------------------------------------------------------------------
  9370 // CXnNodeImpl::BorderTopStyleL
  8404 // CXnNodeImpl::BorderTopStyleL
  9371 // Returns border-top-style property.
  8405 // Returns border-top-style property.
  9372 // -----------------------------------------------------------------------------
  8406 // -----------------------------------------------------------------------------
  9373 //
  8407 //
  9374 CXnProperty* CXnNodeImpl::BorderTopStyleL()
  8408 CXnProperty* CXnNodeImpl::BorderTopStyleL()
  9375     {
  8409     {
  9376     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9377     if ( refNode )
       
  9378         {
       
  9379         RPointerArray< CXnProperty >* propertyArray =
       
  9380             refNode->Impl()->iLayoutPropertyCache ?
       
  9381             &( refNode->Impl()->iLayoutPropertyCache->iBorderTopStyles ) :
       
  9382             NULL;
       
  9383         return ReferredPropertyL( propertyArray, iStates );
       
  9384         }
       
  9385     CXnProperty* property =
  8410     CXnProperty* property =
  9386         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderTopStyle : NULL;
  8411         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderTopStyle : NULL;
  9387     return PropertyL( this, property, &CXnNode::BorderTopStyleL,
  8412     return PropertyL( property, &CXnNode::BorderTopStyleL,
  9388         iUiEngine, iLayoutPropertyCache,
  8413         iLayoutPropertyCache, iParent );
  9389         iParent, iRef );
       
  9390     }
  8414     }
  9391 
  8415 
  9392 // -----------------------------------------------------------------------------
  8416 // -----------------------------------------------------------------------------
  9393 // CXnNodeImpl::BorderBottomStyleL
  8417 // CXnNodeImpl::BorderBottomStyleL
  9394 // Returns border-bottom-style property.
  8418 // Returns border-bottom-style property.
  9395 // -----------------------------------------------------------------------------
  8419 // -----------------------------------------------------------------------------
  9396 //
  8420 //
  9397 CXnProperty* CXnNodeImpl::BorderBottomStyleL()
  8421 CXnProperty* CXnNodeImpl::BorderBottomStyleL()
  9398     {
  8422     {
  9399     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9400     if ( refNode )
       
  9401         {
       
  9402         RPointerArray< CXnProperty >* propertyArray =
       
  9403             refNode->Impl()->iLayoutPropertyCache ?
       
  9404             &( refNode->Impl()->iLayoutPropertyCache->iBorderBottomStyles ) :
       
  9405             NULL;
       
  9406         return ReferredPropertyL( propertyArray, iStates );
       
  9407         }
       
  9408     CXnProperty* property =
  8423     CXnProperty* property =
  9409         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderBottomStyle : NULL;
  8424         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderBottomStyle : NULL;
  9410     return PropertyL( this, property, &CXnNode::BorderBottomStyleL,
  8425     return PropertyL( property, &CXnNode::BorderBottomStyleL,
  9411         iUiEngine, iLayoutPropertyCache,
  8426         iLayoutPropertyCache, iParent );
  9412         iParent, iRef );
       
  9413     }
  8427     }
  9414 
  8428 
  9415 // -----------------------------------------------------------------------------
  8429 // -----------------------------------------------------------------------------
  9416 // CXnNodeImpl::BorderStyleL
  8430 // CXnNodeImpl::BorderStyleL
  9417 // Returns border-style property.
  8431 // Returns border-style property.
  9418 // -----------------------------------------------------------------------------
  8432 // -----------------------------------------------------------------------------
  9419 //
  8433 //
  9420 CXnProperty* CXnNodeImpl::BorderStyleL()
  8434 CXnProperty* CXnNodeImpl::BorderStyleL()
  9421     {
  8435     {
  9422     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9423     if ( refNode )
       
  9424         {
       
  9425         RPointerArray< CXnProperty >* propertyArray =
       
  9426             refNode->Impl()->iLayoutPropertyCache ?
       
  9427             &( refNode->Impl()->iLayoutPropertyCache->iBorderStyles ) :
       
  9428             NULL;
       
  9429         return ReferredPropertyL( propertyArray, iStates );
       
  9430         }
       
  9431     CXnProperty* property =
  8436     CXnProperty* property =
  9432         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderStyle : NULL;
  8437         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderStyle : NULL;
  9433     return PropertyL( this, property, &CXnNode::BorderStyleL,
  8438     return PropertyL( property, &CXnNode::BorderStyleL,
  9434         iUiEngine, iLayoutPropertyCache,
  8439         iLayoutPropertyCache, iParent );
  9435         iParent, iRef );
       
  9436     }
  8440     }
  9437 
  8441 
  9438 // -----------------------------------------------------------------------------
  8442 // -----------------------------------------------------------------------------
  9439 // CXnNodeImpl::BorderImageL
  8443 // CXnNodeImpl::BorderImageL
  9440 // Returns border-image property.
  8444 // Returns border-image property.
  9442 //
  8446 //
  9443 CXnProperty* CXnNodeImpl::BorderImageL()
  8447 CXnProperty* CXnNodeImpl::BorderImageL()
  9444     {
  8448     {
  9445     CXnProperty* property =
  8449     CXnProperty* property =
  9446         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderImage : NULL;
  8450         iLayoutPropertyCache ? iLayoutPropertyCache->iBorderImage : NULL;
  9447     return PropertyL( this, property, &CXnNode::BorderImageL,
  8451     return PropertyL( property, &CXnNode::BorderImageL,
  9448         iUiEngine, iLayoutPropertyCache,
  8452         iLayoutPropertyCache, iParent );
  9449         iParent, iRef );
       
  9450     }
  8453     }
  9451 
  8454 
  9452 // -----------------------------------------------------------------------------
  8455 // -----------------------------------------------------------------------------
  9453 // CXnNodeImpl::DisplayPriorityL
  8456 // CXnNodeImpl::DisplayPriorityL
  9454 // Returns display-priority property.
  8457 // Returns display-priority property.
  9455 // -----------------------------------------------------------------------------
  8458 // -----------------------------------------------------------------------------
  9456 //
  8459 //
  9457 CXnProperty* CXnNodeImpl::DisplayPriorityL()
  8460 CXnProperty* CXnNodeImpl::DisplayPriorityL()
  9458     {
  8461     {
  9459     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9460     if ( refNode )
       
  9461         {
       
  9462         RPointerArray< CXnProperty >* propertyArray =
       
  9463             refNode->Impl()->iLayoutPropertyCache ?
       
  9464             &( refNode->Impl()->iLayoutPropertyCache->iDisplayPriorities ) :
       
  9465             NULL;
       
  9466         return ReferredPropertyL( propertyArray, iStates );
       
  9467         }
       
  9468     CXnProperty* property =
  8462     CXnProperty* property =
  9469         iLayoutPropertyCache ? iLayoutPropertyCache->iDisplayPriority : NULL;
  8463         iLayoutPropertyCache ? iLayoutPropertyCache->iDisplayPriority : NULL;
  9470     return PropertyL( this, property, &CXnNode::DisplayPriorityL,
  8464     return PropertyL( property, &CXnNode::DisplayPriorityL,
  9471         iUiEngine, iLayoutPropertyCache,
  8465         iLayoutPropertyCache, iParent );
  9472         iParent, iRef );
       
  9473     }
  8466     }
  9474 
  8467 
  9475 // -----------------------------------------------------------------------------
  8468 // -----------------------------------------------------------------------------
  9476 // CXnNodeImpl::NameL
  8469 // CXnNodeImpl::NameL
  9477 // Returns name property.
  8470 // Returns name property.
  9478 // -----------------------------------------------------------------------------
  8471 // -----------------------------------------------------------------------------
  9479 //
  8472 //
  9480 CXnProperty* CXnNodeImpl::NameL()
  8473 CXnProperty* CXnNodeImpl::NameL()
  9481     {
  8474     {
  9482     return PropertyL( this, iName, &CXnNode::NameL,
  8475     return PropertyL( iName, &CXnNode::NameL, this, iParent );
  9483         iUiEngine, this,
       
  9484         iParent, iRef );
       
  9485     }
  8476     }
  9486 
  8477 
  9487 // -----------------------------------------------------------------------------
  8478 // -----------------------------------------------------------------------------
  9488 // CXnNodeImpl::ValueL
  8479 // CXnNodeImpl::ValueL
  9489 // Returns value property.
  8480 // Returns value property.
  9490 // -----------------------------------------------------------------------------
  8481 // -----------------------------------------------------------------------------
  9491 //
  8482 //
  9492 CXnProperty* CXnNodeImpl::ValueL()
  8483 CXnProperty* CXnNodeImpl::ValueL()
  9493     {
  8484     {
  9494     return PropertyL( this, iValue, &CXnNode::ValueL,
  8485     return PropertyL( iValue, &CXnNode::ValueL, this, iParent );
  9495         iUiEngine, this,
       
  9496         iParent, iRef );
       
  9497     }
  8486     }
  9498 
  8487 
  9499 // -----------------------------------------------------------------------------
  8488 // -----------------------------------------------------------------------------
  9500 // CXnNodeImpl::VisibilityL
  8489 // CXnNodeImpl::VisibilityL
  9501 // Returns visibility property.
  8490 // Returns visibility property.
  9502 // -----------------------------------------------------------------------------
  8491 // -----------------------------------------------------------------------------
  9503 //
  8492 //
  9504 CXnProperty* CXnNodeImpl::VisibilityL()
  8493 CXnProperty* CXnNodeImpl::VisibilityL()
  9505     {
  8494     {
  9506     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9507     if ( refNode )
       
  9508         {
       
  9509         RPointerArray< CXnProperty >* propertyArray =
       
  9510             refNode->Impl()->iLayoutPropertyCache ?
       
  9511             &( refNode->Impl()->iLayoutPropertyCache->iVisibilities ) :
       
  9512             NULL;
       
  9513         return ReferredPropertyL( propertyArray, iStates );
       
  9514         }
       
  9515     CXnProperty* property =
  8495     CXnProperty* property =
  9516         iLayoutPropertyCache ? iLayoutPropertyCache->iVisibility : NULL;
  8496         iLayoutPropertyCache ? iLayoutPropertyCache->iVisibility : NULL;
  9517     return PropertyL( this, property, &CXnNode::VisibilityL,
  8497     return PropertyL( property, &CXnNode::VisibilityL, 
  9518         iUiEngine, iLayoutPropertyCache,
  8498         iLayoutPropertyCache, iParent );
  9519         iParent, iRef );
       
  9520     }
  8499     }
  9521 
  8500 
  9522 // -----------------------------------------------------------------------------
  8501 // -----------------------------------------------------------------------------
  9523 // CXnNodeImpl::LabelL
  8502 // CXnNodeImpl::LabelL
  9524 // Returns label property.
  8503 // Returns label property.
  9525 // -----------------------------------------------------------------------------
  8504 // -----------------------------------------------------------------------------
  9526 //
  8505 //
  9527 CXnProperty* CXnNodeImpl::LabelL()
  8506 CXnProperty* CXnNodeImpl::LabelL()
  9528     {
  8507     {
  9529     return PropertyL( this, iLabel, &CXnNode::LabelL,
  8508     return PropertyL( iLabel, &CXnNode::LabelL, this, iParent );
  9530         iUiEngine, this,
       
  9531         iParent, iRef );
       
  9532     }
  8509     }
  9533 
  8510 
  9534 // -----------------------------------------------------------------------------
  8511 // -----------------------------------------------------------------------------
  9535 // CXnNodeImpl::InitialFocusL
  8512 // CXnNodeImpl::InitialFocusL
  9536 // Returns initial-focus property.
  8513 // Returns initial-focus property.
  9537 // -----------------------------------------------------------------------------
  8514 // -----------------------------------------------------------------------------
  9538 //
  8515 //
  9539 CXnProperty* CXnNodeImpl::InitialFocusL()
  8516 CXnProperty* CXnNodeImpl::InitialFocusL()
  9540     {
  8517     {
  9541     return PropertyL( this, iInitialFocus, &CXnNode::InitialFocusL,
  8518     return PropertyL( iInitialFocus, &CXnNode::InitialFocusL, this, iParent );
  9542         iUiEngine, this,
       
  9543         iParent, iRef );
       
  9544     }
  8519     }
  9545 
  8520 
  9546 // -----------------------------------------------------------------------------
  8521 // -----------------------------------------------------------------------------
  9547 // CXnNodeImpl::ClassL
  8522 // CXnNodeImpl::ClassL
  9548 // Returns class property.
  8523 // Returns class property.
  9549 // -----------------------------------------------------------------------------
  8524 // -----------------------------------------------------------------------------
  9550 //
  8525 //
  9551 CXnProperty* CXnNodeImpl::ClassL()
  8526 CXnProperty* CXnNodeImpl::ClassL()
  9552     {
  8527     {
  9553     return PropertyL( this, iClass, &CXnNode::ClassL,
  8528     return PropertyL( iClass, &CXnNode::ClassL, this, iParent );
  9554         iUiEngine, this,
       
  9555         iParent, iRef );
       
  9556     }
  8529     }
  9557 
  8530 
  9558 // -----------------------------------------------------------------------------
  8531 // -----------------------------------------------------------------------------
  9559 // CXnNodeImpl::IdL
  8532 // CXnNodeImpl::IdL
  9560 // Returns id property.
  8533 // Returns id property.
  9594 // Returns path property.
  8567 // Returns path property.
  9595 // -----------------------------------------------------------------------------
  8568 // -----------------------------------------------------------------------------
  9596 //
  8569 //
  9597 CXnProperty* CXnNodeImpl::PathL()
  8570 CXnProperty* CXnNodeImpl::PathL()
  9598     {
  8571     {
  9599     return PropertyL( this, iPath, &CXnNode::PathL,
  8572     return PropertyL( iPath, &CXnNode::PathL, this, iParent );
  9600         iUiEngine, this,
       
  9601         iParent, iRef );
       
  9602     }
  8573     }
  9603 
  8574 
  9604 // -----------------------------------------------------------------------------
  8575 // -----------------------------------------------------------------------------
  9605 // CXnNodeImpl::MaskPathL
  8576 // CXnNodeImpl::MaskPathL
  9606 // Returns maskpath property.
  8577 // Returns maskpath property.
  9607 // -----------------------------------------------------------------------------
  8578 // -----------------------------------------------------------------------------
  9608 //
  8579 //
  9609 CXnProperty* CXnNodeImpl::MaskPathL()
  8580 CXnProperty* CXnNodeImpl::MaskPathL()
  9610     {
  8581     {
  9611     return PropertyL( this, iMaskPath, &CXnNode::MaskPathL,
  8582     return PropertyL( iMaskPath, &CXnNode::MaskPathL, this, iParent );
  9612         iUiEngine, this,
       
  9613         iParent, iRef );
       
  9614     }
  8583     }
  9615 
  8584 
  9616 // -----------------------------------------------------------------------------
  8585 // -----------------------------------------------------------------------------
  9617 // CXnNodeImpl::NavIndexL
  8586 // CXnNodeImpl::NavIndexL
  9618 // Returns nav-index property.
  8587 // Returns nav-index property.
  9619 // -----------------------------------------------------------------------------
  8588 // -----------------------------------------------------------------------------
  9620 //
  8589 //
  9621 CXnProperty* CXnNodeImpl::NavIndexL()
  8590 CXnProperty* CXnNodeImpl::NavIndexL()
  9622     {
  8591     {
  9623     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9624     if ( refNode )
       
  9625         {
       
  9626         RPointerArray< CXnProperty >* propertyArray =
       
  9627             refNode->Impl()->iLayoutPropertyCache ?
       
  9628             &( refNode->Impl()->iLayoutPropertyCache->iNavIndexes ) :
       
  9629             NULL;
       
  9630         return ReferredPropertyL( propertyArray, iStates );
       
  9631         }
       
  9632     CXnProperty* property =
  8592     CXnProperty* property =
  9633         iLayoutPropertyCache ? iLayoutPropertyCache->iNavIndex : NULL;
  8593         iLayoutPropertyCache ? iLayoutPropertyCache->iNavIndex : NULL;
  9634     return PropertyL( this, property, &CXnNode::NavIndexL,
  8594     return PropertyL( property, &CXnNode::NavIndexL, 
  9635         iUiEngine, iLayoutPropertyCache,
  8595         iLayoutPropertyCache, iParent );
  9636         iParent, iRef );
       
  9637     }
       
  9638 
       
  9639 // -----------------------------------------------------------------------------
       
  9640 // CXnNodeImpl::VisibleRowsL
       
  9641 // Returns visible-rows property.
       
  9642 // -----------------------------------------------------------------------------
       
  9643 //
       
  9644 CXnProperty* CXnNodeImpl::VisibleRowsL()
       
  9645     {
       
  9646     CXnProperty* property =
       
  9647         iGridPropertyCache ? iGridPropertyCache->iVisibleRows : NULL;
       
  9648     return PropertyL( this, property, &CXnNode::VisibleRowsL,
       
  9649         iUiEngine, iGridPropertyCache,
       
  9650         iParent, iRef );
       
  9651     }
       
  9652 
       
  9653 // -----------------------------------------------------------------------------
       
  9654 // CXnNodeImpl::GridColumnsL
       
  9655 // Returns grid-columns property.
       
  9656 // -----------------------------------------------------------------------------
       
  9657 //
       
  9658 CXnProperty* CXnNodeImpl::GridColumnsL()
       
  9659     {
       
  9660     CXnProperty* property =
       
  9661         iGridPropertyCache ? iGridPropertyCache->iGridColumns : NULL;
       
  9662     return PropertyL( this, property, &CXnNode::GridColumnsL,
       
  9663         iUiEngine, iGridPropertyCache,
       
  9664         iParent, iRef );
       
  9665     }
       
  9666 
       
  9667 // -----------------------------------------------------------------------------
       
  9668 // CXnNodeImpl::GridOrientationL
       
  9669 // Returns grid-orientation property.
       
  9670 // -----------------------------------------------------------------------------
       
  9671 //
       
  9672 CXnProperty* CXnNodeImpl::GridOrientationL()
       
  9673     {
       
  9674     CXnProperty* property =
       
  9675         iGridPropertyCache ? iGridPropertyCache->iGridOrientation : NULL;
       
  9676     return PropertyL( this, property, &CXnNode::GridOrientationL,
       
  9677         iUiEngine, iGridPropertyCache,
       
  9678         iParent, iRef );
       
  9679     }
       
  9680 
       
  9681 // -----------------------------------------------------------------------------
       
  9682 // CXnNodeImpl::GridVerDirectionL
       
  9683 // Returns grid-ver-direction property.
       
  9684 // -----------------------------------------------------------------------------
       
  9685 //
       
  9686 CXnProperty* CXnNodeImpl::GridVerDirectionL()
       
  9687     {
       
  9688     CXnProperty* property =
       
  9689         iGridPropertyCache ? iGridPropertyCache->iGridVerDirection : NULL;
       
  9690     return PropertyL( this, property, &CXnNode::GridVerDirectionL,
       
  9691         iUiEngine, iGridPropertyCache,
       
  9692         iParent, iRef );
       
  9693     }
       
  9694 
       
  9695 // -----------------------------------------------------------------------------
       
  9696 // CXnNodeImpl::GridHorDirectionL
       
  9697 // Returns grid-hor-direction property.
       
  9698 // -----------------------------------------------------------------------------
       
  9699 //
       
  9700 CXnProperty* CXnNodeImpl::GridHorDirectionL()
       
  9701     {
       
  9702     CXnProperty* property =
       
  9703         iGridPropertyCache ? iGridPropertyCache->iGridHorDirection : NULL;
       
  9704     return PropertyL( this, property, &CXnNode::GridHorDirectionL,
       
  9705         iUiEngine, iGridPropertyCache,
       
  9706         iParent, iRef );
       
  9707     }
       
  9708 
       
  9709 // -----------------------------------------------------------------------------
       
  9710 // CXnNodeImpl::FocusHorLoopingL
       
  9711 // Returns focus-hor-looping property.
       
  9712 // -----------------------------------------------------------------------------
       
  9713 //
       
  9714 CXnProperty* CXnNodeImpl::FocusHorLoopingL()
       
  9715     {
       
  9716     CXnProperty* property =
       
  9717         iGridPropertyCache ? iGridPropertyCache->iFocusHorLooping : NULL;
       
  9718     return PropertyL( this, property, &CXnNode::FocusHorLoopingL,
       
  9719         iUiEngine, iGridPropertyCache,
       
  9720         iParent, iRef );
       
  9721     }
       
  9722 
       
  9723 // -----------------------------------------------------------------------------
       
  9724 // CXnNodeImpl::FocusVerLoopingL
       
  9725 // Returns focus-ver-looping property.
       
  9726 // -----------------------------------------------------------------------------
       
  9727 //
       
  9728 CXnProperty* CXnNodeImpl::FocusVerLoopingL()
       
  9729     {
       
  9730     CXnProperty* property =
       
  9731         iGridPropertyCache ? iGridPropertyCache->iFocusVerLooping : NULL;
       
  9732     return PropertyL( this, property, &CXnNode::FocusVerLoopingL,
       
  9733         iUiEngine, iGridPropertyCache,
       
  9734         iParent, iRef );
       
  9735     }
  8596     }
  9736 
  8597 
  9737 // -----------------------------------------------------------------------------
  8598 // -----------------------------------------------------------------------------
  9738 // CXnNodeImpl::ZIndexL
  8599 // CXnNodeImpl::ZIndexL
  9739 // Returns z-index property.
  8600 // Returns z-index property.
  9740 // -----------------------------------------------------------------------------
  8601 // -----------------------------------------------------------------------------
  9741 //
  8602 //
  9742 CXnProperty* CXnNodeImpl::ZIndexL()
  8603 CXnProperty* CXnNodeImpl::ZIndexL()
  9743     {
  8604     {
  9744     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9745     if ( refNode )
       
  9746         {
       
  9747         RPointerArray< CXnProperty >* propertyArray =
       
  9748             refNode->Impl()->iLayoutPropertyCache ?
       
  9749             &( refNode->Impl()->iLayoutPropertyCache->iZIndexes ) :
       
  9750             NULL;
       
  9751         return ReferredPropertyL( propertyArray, iStates );
       
  9752         }
       
  9753     CXnProperty* property =
  8605     CXnProperty* property =
  9754         iLayoutPropertyCache ? iLayoutPropertyCache->iZIndex : NULL;
  8606         iLayoutPropertyCache ? iLayoutPropertyCache->iZIndex : NULL;
  9755     return PropertyL( this, property, &CXnNode::ZIndexL,
  8607     return PropertyL( property, &CXnNode::ZIndexL,
  9756         iUiEngine, iLayoutPropertyCache,
  8608         iLayoutPropertyCache, iParent );
  9757         iParent, iRef );
       
  9758     }
  8609     }
  9759 
  8610 
  9760 // -----------------------------------------------------------------------------
  8611 // -----------------------------------------------------------------------------
  9761 // CXnNodeImpl::BackgroundColorL
  8612 // CXnNodeImpl::BackgroundColorL
  9762 // Returns background-color property.
  8613 // Returns background-color property.
  9763 // -----------------------------------------------------------------------------
  8614 // -----------------------------------------------------------------------------
  9764 //
  8615 //
  9765 CXnProperty* CXnNodeImpl::BackgroundColorL()
  8616 CXnProperty* CXnNodeImpl::BackgroundColorL()
  9766     {
  8617     {
  9767     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9768     if ( refNode )
       
  9769         {
       
  9770         RPointerArray< CXnProperty >* propertyArray =
       
  9771             refNode->Impl()->iLayoutPropertyCache ?
       
  9772             &( refNode->Impl()->iLayoutPropertyCache->iBackgroundColors ) :
       
  9773             NULL;
       
  9774         return ReferredPropertyL( propertyArray, iStates );
       
  9775         }
       
  9776     CXnProperty* property =
  8618     CXnProperty* property =
  9777         iLayoutPropertyCache ? iLayoutPropertyCache->iBackgroundColor : NULL;
  8619         iLayoutPropertyCache ? iLayoutPropertyCache->iBackgroundColor : NULL;
  9778     return PropertyL( this, property, &CXnNode::BackgroundColorL,
  8620     return PropertyL( property, &CXnNode::BackgroundColorL,
  9779         iUiEngine, iLayoutPropertyCache,
  8621         iLayoutPropertyCache, iParent );
  9780         iParent, iRef );
       
  9781     }
  8622     }
  9782 
  8623 
  9783 // -----------------------------------------------------------------------------
  8624 // -----------------------------------------------------------------------------
  9784 // CXnNodeImpl::BackgroundImageL
  8625 // CXnNodeImpl::BackgroundImageL
  9785 // Returns background-image property.
  8626 // Returns background-image property.
  9786 // -----------------------------------------------------------------------------
  8627 // -----------------------------------------------------------------------------
  9787 //
  8628 //
  9788 CXnProperty* CXnNodeImpl::BackgroundImageL()
  8629 CXnProperty* CXnNodeImpl::BackgroundImageL()
  9789     {
  8630     {
  9790     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9791     if ( refNode )
       
  9792         {
       
  9793         RPointerArray< CXnProperty >* propertyArray =
       
  9794             refNode->Impl()->iLayoutPropertyCache ?
       
  9795              &( refNode->Impl()->iLayoutPropertyCache->iBackgroundImages ) :
       
  9796              NULL;
       
  9797         return ReferredPropertyL( propertyArray, iStates );
       
  9798         }
       
  9799     CXnProperty* property =
  8631     CXnProperty* property =
  9800         iLayoutPropertyCache ? iLayoutPropertyCache->iBackgroundImage : NULL;
  8632         iLayoutPropertyCache ? iLayoutPropertyCache->iBackgroundImage : NULL;
  9801     return PropertyL( this, property, &CXnNode::BackgroundImageL,
  8633     return PropertyL( property, &CXnNode::BackgroundImageL,
  9802         iUiEngine, iLayoutPropertyCache,
  8634         iLayoutPropertyCache, iParent );
  9803         iParent, iRef );
       
  9804     }
  8635     }
  9805 
  8636 
  9806 // -----------------------------------------------------------------------------
  8637 // -----------------------------------------------------------------------------
  9807 // CXnNodeImpl::FocusBackgroundL
  8638 // CXnNodeImpl::FocusBackgroundL
  9808 // Returns focus-background property.
  8639 // Returns focus-background property.
  9809 // -----------------------------------------------------------------------------
  8640 // -----------------------------------------------------------------------------
  9810 //
  8641 //
  9811 CXnProperty* CXnNodeImpl::FocusBackgroundL()
  8642 CXnProperty* CXnNodeImpl::FocusBackgroundL()
  9812     {
  8643     {
  9813     CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9814 
       
  9815     if ( refNode )
       
  9816         {
       
  9817         RPointerArray< CXnProperty >* propertyArray =
       
  9818             refNode->Impl()->iLayoutPropertyCache ?
       
  9819             &( refNode->Impl()->iLayoutPropertyCache->iFocusBackgrounds ) :
       
  9820             NULL;
       
  9821         return ReferredPropertyL( propertyArray, iStates );
       
  9822         }
       
  9823 
       
  9824     CXnProperty* property =
  8644     CXnProperty* property =
  9825         iLayoutPropertyCache ? iLayoutPropertyCache->iFocusBackground : NULL;
  8645         iLayoutPropertyCache ? iLayoutPropertyCache->iFocusBackground : NULL;
  9826 
  8646 
  9827     return PropertyL( this, property, &CXnNode::FocusBackgroundL,
  8647     return PropertyL( property, &CXnNode::FocusBackgroundL,
  9828         iUiEngine, iLayoutPropertyCache,
  8648         iLayoutPropertyCache, iParent );
  9829         iParent, iRef );
       
  9830     }
       
  9831 
       
  9832 // -----------------------------------------------------------------------------
       
  9833 // CXnNodeImpl::RefL
       
  9834 // Returns ref property.
       
  9835 // -----------------------------------------------------------------------------
       
  9836 //
       
  9837 CXnProperty* CXnNodeImpl::RefL()
       
  9838     {
       
  9839     return iRef;
       
  9840     }
       
  9841 
       
  9842 // -----------------------------------------------------------------------------
       
  9843 // CXnNodeImpl::GridScrollBarWidthL
       
  9844 // Returns grid-scrollbar-width property.
       
  9845 // -----------------------------------------------------------------------------
       
  9846 //
       
  9847 CXnProperty* CXnNodeImpl::GridScrollBarWidthL()
       
  9848     {
       
  9849     CXnProperty* property = NULL;
       
  9850 
       
  9851     if ( iGridPropertyCache && iGridPropertyCache->iGridScrollBarWidth)
       
  9852         {
       
  9853         property = PropertyL(
       
  9854             this,
       
  9855             iGridPropertyCache->iGridScrollBarWidth,
       
  9856             &CXnNode::GridScrollBarWidthL,
       
  9857             iUiEngine, iGridPropertyCache,
       
  9858             iParent,
       
  9859             iRef );
       
  9860         }
       
  9861 
       
  9862     if ( !property && iRef )
       
  9863         {
       
  9864         CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9865 
       
  9866         if ( refNode )
       
  9867             {
       
  9868             property = refNode->GridScrollBarWidthL();
       
  9869             }
       
  9870         }
       
  9871 
       
  9872     if ( !property )
       
  9873         {
       
  9874         TReal sbWidth( KS60ScrollbarDefaultWidth );
       
  9875         // Set default value
       
  9876         CXnDomDocument& doc = iUiEngine->ODT()->DomDocument();
       
  9877         CXnDomProperty* domProperty = CXnDomProperty::NewL(
       
  9878             XnPropertyNames::grid::KS60GridScrollbarWidth, doc.StringPool() );
       
  9879         CleanupStack::PushL( domProperty );
       
  9880         CXnDomPropertyValue* propertyValue = CXnDomPropertyValue::NewL(
       
  9881             doc.StringPool() );
       
  9882         CleanupStack::PushL( propertyValue );
       
  9883         if ( AknLayoutUtils::PenEnabled() )
       
  9884             {
       
  9885             sbWidth = KS60ScrollbarDefaultWidthPenEnabled;
       
  9886             }
       
  9887         propertyValue->SetFloatValueL( CXnDomPropertyValue::EUnitValue, sbWidth );
       
  9888         domProperty->PropertyValueList().AddItemL( propertyValue );
       
  9889         CleanupStack::Pop( propertyValue );
       
  9890 
       
  9891         property = CXnProperty::NewL( domProperty );
       
  9892         CleanupStack::Pop( domProperty );
       
  9893         CleanupStack::PushL( property );
       
  9894 
       
  9895         // If this is a reference node, set property to the referred node, not this.
       
  9896         CXnNode* node = RefNodeL( this, iRef, iUiEngine );
       
  9897         if ( node )
       
  9898             {
       
  9899             node->SetPropertyL( property );
       
  9900             }
       
  9901         else
       
  9902             {
       
  9903             this->SetPropertyL( property ); // deletes existing one
       
  9904             }
       
  9905 
       
  9906         CleanupStack::Pop( property );
       
  9907         }
       
  9908 
       
  9909     return property;
       
  9910     }
       
  9911 
       
  9912 // -----------------------------------------------------------------------------
       
  9913 // CXnNodeImpl::GridScrollBarMarginL
       
  9914 // Returns grid-scrollbar-margin property.
       
  9915 // -----------------------------------------------------------------------------
       
  9916 //
       
  9917 CXnProperty* CXnNodeImpl::GridScrollBarMarginL()
       
  9918     {
       
  9919     CXnProperty* property = NULL;
       
  9920     if ( iGridPropertyCache && iGridPropertyCache->iGridScrollBarMargin )
       
  9921         {
       
  9922         property = PropertyL(
       
  9923             this,
       
  9924             iGridPropertyCache->iGridScrollBarMargin,
       
  9925             &CXnNode::GridScrollBarMarginL,
       
  9926             iUiEngine, iGridPropertyCache,
       
  9927             iParent,
       
  9928             iRef );
       
  9929         }
       
  9930 
       
  9931     if ( !property && iRef )
       
  9932         {
       
  9933         CXnNode* refNode = RefNodeL( this, iRef, iUiEngine );
       
  9934 
       
  9935         if ( refNode )
       
  9936             {
       
  9937             property = refNode->GridScrollBarMarginL();
       
  9938             }
       
  9939         }
       
  9940 
       
  9941     if ( !property )
       
  9942         {
       
  9943         TReal sbMarginWidth( KS60ScrollbarDefaultMargin );
       
  9944         // Set default value
       
  9945         CXnDomDocument& doc = iUiEngine->ODT()->DomDocument();
       
  9946         CXnDomProperty* domProperty =
       
  9947             CXnDomProperty::NewL(
       
  9948                 XnPropertyNames::grid::KS60GridScrollbarMargin,
       
  9949                 doc.StringPool() );
       
  9950         CleanupStack::PushL( domProperty );
       
  9951         CXnDomPropertyValue* propertyValue = CXnDomPropertyValue::NewL(
       
  9952             doc.StringPool() );
       
  9953         CleanupStack::PushL( propertyValue );
       
  9954         if ( AknLayoutUtils::PenEnabled() )
       
  9955             {
       
  9956             sbMarginWidth = KS60ScrollbarDefaultMarginPenEnabled;
       
  9957             }
       
  9958         propertyValue->SetFloatValueL(
       
  9959             CXnDomPropertyValue::EUnitValue, sbMarginWidth );
       
  9960         domProperty->PropertyValueList().AddItemL( propertyValue );
       
  9961         CleanupStack::Pop( propertyValue );
       
  9962 
       
  9963         property = CXnProperty::NewL( domProperty );
       
  9964         CleanupStack::Pop( domProperty );
       
  9965         CleanupStack::PushL( property );
       
  9966 
       
  9967         // If this is a reference node, set property to the referred node, not this.
       
  9968         CXnNode* node = RefNodeL( this, iRef, iUiEngine );
       
  9969         if ( node )
       
  9970             {
       
  9971             node->SetPropertyL( property );
       
  9972             }
       
  9973         else
       
  9974             {
       
  9975             this->SetPropertyL( property ); // deletes existing one
       
  9976             }
       
  9977 
       
  9978         CleanupStack::Pop(property);
       
  9979         }
       
  9980     return property;
       
  9981     }
  8649     }
  9982 
  8650 
  9983 // ----------------------------------------------------------------------------
  8651 // ----------------------------------------------------------------------------
  9984 // CXnNodeImpl::SetDomNode
  8652 // CXnNodeImpl::SetDomNode
  9985 // Sets DOM node
  8653 // Sets DOM node
 10197 
  8865 
 10198         // Measure done
  8866         // Measure done
 10199         iAdaptive &= ~XnAdaptive::EMeasure;
  8867         iAdaptive &= ~XnAdaptive::EMeasure;
 10200         // Size is now fixed
  8868         // Size is now fixed
 10201         iAdaptive |= XnAdaptive::ESizeFixed;
  8869         iAdaptive |= XnAdaptive::ESizeFixed;
 10202         }
       
 10203     }
       
 10204 
       
 10205 // ----------------------------------------------------------------------------
       
 10206 // CXnNodeImpl::PeriodicEventL
       
 10207 // ----------------------------------------------------------------------------
       
 10208 //
       
 10209 TInt CXnNodeImpl::PeriodicEventL( TAny* aPtr )
       
 10210     {
       
 10211     TXnTimedTrigger* params = static_cast< TXnTimedTrigger* >( aPtr );
       
 10212     CXnNodeImpl* impl = params->iNodeImpl;
       
 10213     CXnUiEngine* engine = params->iEngine;
       
 10214     CXnNode* node = params->iNode;
       
 10215     CXnNode* eventData = params->iEventData;
       
 10216     CXnDomNode* actionNode = params->iActionNode;
       
 10217     CXnDomNode* triggerNode = params->iTriggerNode;
       
 10218     RunEventsL( impl, *engine, *node, *actionNode, *triggerNode, *eventData );
       
 10219     delete params;
       
 10220     impl->DeletePeriodic();
       
 10221     return EFalse;
       
 10222     }
       
 10223 
       
 10224 // ----------------------------------------------------------------------------
       
 10225 // CXnNodeImpl::PeriodicTimer
       
 10226 // ----------------------------------------------------------------------------
       
 10227 //
       
 10228 CPeriodic* CXnNodeImpl::PeriodicTimer()
       
 10229     {
       
 10230     return iPeriodicTimer;
       
 10231     }
       
 10232 
       
 10233 // ----------------------------------------------------------------------------
       
 10234 // CXnNodeImpl::CreatePeriodicL
       
 10235 // ----------------------------------------------------------------------------
       
 10236 //
       
 10237 void CXnNodeImpl::CreatePeriodicL()
       
 10238     {
       
 10239     iPeriodicTimer = CPeriodic::NewL( CActive::EPriorityIdle );
       
 10240     }
       
 10241 
       
 10242 // ---------------------------------------------------------
       
 10243 // CXnNodeImpl::DeletePeriodic
       
 10244 // ---------------------------------------------------------
       
 10245 //
       
 10246 void CXnNodeImpl::DeletePeriodic()
       
 10247     {
       
 10248     if ( iPeriodicTimer )
       
 10249         {
       
 10250         iPeriodicTimer->Cancel();
       
 10251         delete iPeriodicTimer;
       
 10252         iPeriodicTimer = NULL;
       
 10253         }
  8870         }
 10254     }
  8871     }
 10255 
  8872 
 10256 // -----------------------------------------------------------------------------
  8873 // -----------------------------------------------------------------------------
 10257 // CXnNodeImpl::SetDirtyL
  8874 // CXnNodeImpl::SetDirtyL
 10512         {
  9129         {
 10513         aRect.Move( iScrollableControl->DeltaPosition() );
  9130         aRect.Move( iScrollableControl->DeltaPosition() );
 10514         }
  9131         }
 10515     return aRect;
  9132     return aRect;
 10516     }
  9133     }
 10517