diff -r b01126ce0bec -r ba63c83f4716 idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp Wed Sep 15 12:00:00 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp Wed Oct 13 14:18:30 2010 +0300 @@ -27,7 +27,6 @@ #include "xnproperty.h" #include "xnuiengine.h" #include "xnappuiadapter.h" -#include "xnkeyeventdispatcher.h" #include "xncontroladapter.h" #include "xnpopupcontroladapter.h" #include "xnmenuadapter.h" @@ -52,6 +51,7 @@ #include "xneffectmanager.h" #include "xnviewadapter.h" #include "xnbackgroundmanager.h" +#include "xntexteditor.h" #include "xnitemactivator.h" // Local constants @@ -337,11 +337,10 @@ static CXnNode* FindNextNodeFromLeftL( RPointerArray< CXnNode >& aArray, CXnNode& aNode, TBool stayInNamespace = EFalse, CXnUiEngine* aEngine = NULL ); static CXnNode* FindNextNodeFromBelowL( - RPointerArray< CXnNode >& aArray, CXnNode& aNode, TBool stayInNamespace = EFalse, CXnUiEngine* aEngine = NULL ); + RPointerArray< CXnNode >& aArray, CXnNode& aNode, TBool stayInNamespace = EFalse ); static CXnNode* FindNextNodeFromAboveL( - RPointerArray< CXnNode >& aArray, CXnNode& aNode, TBool stayInNamespace = EFalse, CXnUiEngine* aEngine = NULL ); + RPointerArray< CXnNode >& aArray, CXnNode& aNode, TBool stayInNamespace = EFalse ); static CXnNode* FindPluginNode( CXnNode& aNode ); -static TBool IsPluginNode( CXnNode& aNode ); static TBool DoInternalFocusChangeL( CXnUiEngine& aEngine, CXnNode& aNode, const TKeyEvent& aKeyEvent, TEventCode aType ); @@ -2936,22 +2935,22 @@ editorNode = &aLayoutNode; } - if ( editorNode ) - { - CXnKeyEventDispatcher* eventDispatcher( - aEngine.AppUiAdapter().ViewAdapter().EventDispatcher() ); + if( editorNode ) + { + XnTextEditorInterface::MXnTextEditorInterface* editorControl = NULL; - if ( eventDispatcher ) - { - if ( aActivate ) - { - eventDispatcher->SetTextEditorActive( editorNode, ETrue ); + XnComponentInterface::MakeInterfaceL( editorControl, editorNode->AppIfL() ); + if( editorControl ) + { + if( aActivate ) + { + editorControl->HandleEditorEvent(CXnTextEditor::KActivateTextEditor); } else { - eventDispatcher->SetTextEditorActive( NULL, EFalse ); - } - } + editorControl->HandleEditorEvent(CXnTextEditor::KDeactivateTextEditor); + } + } } } @@ -3057,21 +3056,17 @@ for ( TInt i = 0; i < plugins.Count(); i++ ) { - CXnNode* node( plugins[i]->Owner()->LayoutNode() ); - TBool editable = plugins[i]->Editable(); - - if( editable ) - { - node->SetStateL( XnPropertyNames::style::common::KEdit ); - } + CXnNode* node( plugins[i]->Owner()->LayoutNode() ); + node->SetStateL( XnPropertyNames::style::common::KEdit ); + if ( !plugins[i]->Occupied() && useEmpty ) { // Make empty space visible SetStringPropertyToNodeL( *sp, *node, XnPropertyNames::style::common::KVisibility, XnPropertyNames::style::common::visibility::KVisible ); - } + } } aEngine.EditMode()->SetEditModeL( CXnEditMode::EDragAndDrop ); @@ -3739,7 +3734,7 @@ } } - plugins.AppendL( &viewData ); + plugins.Append( &viewData ); RPointerArray< CXnNode > list; CleanupClosePushL( list ); @@ -4785,6 +4780,7 @@ TBool stayInNamespace, CXnUiEngine* aEngine ) { + CXnNode* nextNode = NULL; TRect rect = aNode.PaddingRect(); @@ -4804,14 +4800,6 @@ // do not shift focus to another view continue; } - if( aEngine->IsEditMode() ) - { - if( !IsPluginNode( *tmpNode ) ) - { - // move only between "plugin" nodes in edit mode - continue; - } - } const TDesC8& tmpNamespace = tmpNode->Impl()->Namespace(); const TDesC8& nodeNamespace = aNode.Impl()->Namespace(); @@ -4935,14 +4923,6 @@ // do not shift focus to another view continue; } - if( aEngine->IsEditMode() ) - { - if( !IsPluginNode( *tmpNode ) ) - { - // move only between "plugin" nodes in edit mode - continue; - } - } const TDesC8& tmpNamespace = tmpNode->Impl()->Namespace(); const TDesC8& nodeNamespace = aNode.Impl()->Namespace(); @@ -5057,7 +5037,6 @@ for ( TInt i = 0; i < aArray.Count(); ++i ) { CXnNode* tmpNode = aArray[i]; - if ( !IsNodeNavigableL( *tmpNode ) ) { continue; @@ -5067,14 +5046,6 @@ // do not shift focus to another view continue; } - if( aEngine->IsEditMode() ) - { - if( !IsPluginNode( *tmpNode ) ) - { - // move only between "plugin" nodes in edit mode - continue; - } - } const TDesC8& tmpNamespace = tmpNode->Impl()->Namespace(); const TDesC8& nodeNamespace = aNode.Impl()->Namespace(); @@ -5260,14 +5231,6 @@ // do not shift focus to another view continue; } - if( aEngine->IsEditMode() ) - { - if( !IsPluginNode( *tmpNode ) ) - { - // move only between "plugin" nodes in edit mode - continue; - } - } const TDesC8& tmpNamespace = tmpNode->Impl()->Namespace(); const TDesC8& nodeNamespace = aNode.Impl()->Namespace(); @@ -5390,14 +5353,6 @@ // do not shift focus to another view continue; } - if( aEngine->IsEditMode() ) - { - if( !IsPluginNode( *tmpNode ) ) - { - // move only between "plugin" nodes in edit mode - continue; - } - } const TDesC8& tmpNamespace = tmpNode->Impl()->Namespace(); const TDesC8& nodeNamespace = aNode.Impl()->Namespace(); @@ -5515,7 +5470,12 @@ for ( TInt i = 0; i < aArray.Count(); ++i ) { CXnNode* tmpNode = aArray[i]; - + /* + if ( tmpNode == &aNode ) + { + continue; + } + */ if ( !IsNodeNavigableL( *tmpNode ) ) { continue; @@ -5525,14 +5485,6 @@ // do not shift focus to another view continue; } - if( aEngine->IsEditMode() ) - { - if( !IsPluginNode( *tmpNode ) ) - { - // move only between "plugin" nodes in edit mode - continue; - } - } const TDesC8& tmpNamespace = tmpNode->Impl()->Namespace(); const TDesC8& nodeNamespace = aNode.Impl()->Namespace(); @@ -5697,8 +5649,7 @@ // static CXnNode* FindNextNodeFromBelowL( RPointerArray< CXnNode >& aArray, - CXnNode& aNode, TBool stayInNamespace, - CXnUiEngine* aEngine ) + CXnNode& aNode, TBool stayInNamespace ) { CXnNode* nextNode = NULL; TRect rect = aNode.PaddingRect(); @@ -5718,14 +5669,6 @@ { // do not shift focus to another view continue; - } - if( aEngine->IsEditMode() ) - { - if( !IsPluginNode( *tmpNode ) ) - { - // move only between "plugin" nodes in edit mode - continue; - } } const TDesC8& tmpNamespace = tmpNode->Impl()->Namespace(); @@ -5811,14 +5754,6 @@ // do not shift focus to another view continue; } - if( aEngine->IsEditMode() ) - { - if( !IsPluginNode( *tmpNode ) ) - { - // move only between "plugin" nodes in edit mode - continue; - } - } const TDesC8& tmpNamespace = tmpNode->Impl()->Namespace(); const TDesC8& nodeNamespace = aNode.Impl()->Namespace(); @@ -5890,8 +5825,7 @@ // static CXnNode* FindNextNodeFromAboveL( RPointerArray< CXnNode >& aArray, - CXnNode& aNode, TBool stayInNamespace, - CXnUiEngine* aEngine ) + CXnNode& aNode, TBool stayInNamespace ) { CXnNode* nextNode = NULL; TRect rect = aNode.PaddingRect(); @@ -5912,14 +5846,6 @@ // do not shift focus to another view continue; } - if( aEngine->IsEditMode() ) - { - if( !IsPluginNode( *tmpNode ) ) - { - // move only between "plugin" nodes in edit mode - continue; - } - } const TDesC8& tmpNamespace = tmpNode->Impl()->Namespace(); const TDesC8& nodeNamespace = aNode.Impl()->Namespace(); @@ -6003,14 +5929,6 @@ // do not shift focus to another view continue; } - if( aEngine->IsEditMode() ) - { - if( !IsPluginNode( *tmpNode ) ) - { - // move only between "plugin" nodes in edit mode - continue; - } - } const TDesC8& tmpNamespace = tmpNode->Impl()->Namespace(); const TDesC8& nodeNamespace = aNode.Impl()->Namespace(); @@ -6101,23 +6019,6 @@ } // ----------------------------------------------------------------------------- -// IsPluginNode -// ----------------------------------------------------------------------------- -// -static TBool IsPluginNode( CXnNode& aNode ) - { - TBool ret = EFalse; - - const TDesC8& nodeType = aNode.DomNode()->Name(); - if( nodeType == KPlugin ) - { - ret = ETrue; - } - - return ret; - } - -// ----------------------------------------------------------------------------- // DoInternalFocusChangeL // ----------------------------------------------------------------------------- // @@ -6149,11 +6050,12 @@ // "nav-index: appearance"... CXnProperty* navind = aNode.NavIndexL(); if ( navind && navind->StringValue() == XnPropertyNames::style::common::KAppearance ) - { - CXnAppUiAdapter& appui( aEngine.AppUiAdapter() ); + { - CXnPluginData* plugin( appui.ViewManager().ActiveViewData().Plugin( &aNode ) ); - + CXnAppUiAdapter& appui = static_cast< CXnAppUiAdapter& >( *iAvkonAppUi ); + CXnPluginData* plugin( + appui.ViewManager().ActiveViewData().Plugin( &aNode ) ); + // find if node is in a widget that contatins some opened popup window TBool containsPopUp = ( plugin ? plugin->IsDisplayingPopup() : EFalse ); @@ -6161,11 +6063,11 @@ RPointerArray< CXnNode >& array = aEngine.ViewManager()->AppearanceNodes(); if ( aKeyEvent.iScanCode == EStdKeyDownArrow ) { - nextNode = FindNextNodeFromBelowL( array, aNode, containsPopUp, &aEngine ); + nextNode = FindNextNodeFromBelowL( array, aNode, containsPopUp ); } else if ( aKeyEvent.iScanCode == EStdKeyUpArrow ) { - nextNode = FindNextNodeFromAboveL( array, aNode, containsPopUp, &aEngine ); + nextNode = FindNextNodeFromAboveL( array, aNode, containsPopUp ); } else if ( aKeyEvent.iScanCode == EStdKeyRightArrow ) { @@ -6176,12 +6078,24 @@ nextNode = FindNextNodeFromLeftL( array, aNode, containsPopUp, &aEngine ); } if ( nextNode ) - { + { + // focus plugin node if in edit mode + if( aEngine.IsEditMode() ) + { + if( nextNode->Type()->Type() != KPlugin ) + { + CXnNode* pluginNode = FindPluginNode( *nextNode ); + if( pluginNode ) + { + nextNode = pluginNode; + } + } + } + if( nextNode && nextNode->ScrollableControl() ) { nextNode->ScrollableControl()->ShowItem( *nextNode ); } - nextNode->SetStateL( XnPropertyNames::style::common::KFocus ); return ETrue; } @@ -7978,10 +7892,13 @@ if ( iDropped || !displayed ) { // Need to check blank here - CXnProperty* prop( VisibilityL() ); - - if ( prop && prop->StringValue() == - XnPropertyNames::style::common::visibility::KBlank ) + CXnProperty* visibility( VisibilityL() ); + CXnProperty* display( DisplayL() ); + + if ( visibility && visibility->StringValue() == + XnPropertyNames::style::common::visibility::KBlank && + ( !display || display->StringValue() + == XnPropertyNames::style::common::display::KBlock ) ) { control->SetBlank( ETrue ); control->MakeVisible( EFalse ); @@ -8042,15 +7959,18 @@ // ----------------------------------------------------------------------------- // void CXnNodeImpl::SetLaidOutL() - { - if ( !iLayoutCapable || iDropped || !IsNodeDisplayedL( *iNode ) ) - { - iLaidOut = EFalse; - } - else - { - iLaidOut = ETrue; - } + { + if ( !iLayoutCapable ) + { + return; + } + + if ( iDropped || !IsNodeDisplayedL( *iNode ) ) + { + return; + } + + iLaidOut = ETrue; for ( TInt i = 0; i < iChildren.Count(); i++ ) { @@ -9217,7 +9137,6 @@ CleanupStack::PopAndDestroy( 2 ); // lockedNodes, lockedNodeIndex } -/* // ----------------------------------------------------------------------------- // CXnNodeImpl::FindNextNodeL // ----------------------------------------------------------------------------- @@ -9246,7 +9165,6 @@ } return node; } -*/ // ----------------------------------------------------------------------------- // CXnNodeImpl::Namespace