diff -r 5f0182e07bfb -r 5456b4e8b3a8 idlehomescreen/xmluirendering/uiengine/src/xnuiengineappif.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengineappif.cpp Wed Sep 01 12:32:46 2010 +0100 @@ -0,0 +1,303 @@ +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Layout calculation and UI rendering mechanism implementations. +* +*/ + +// User includes +#include "xnuiengineappif.h" +#include "xnuiengine.h" +#include "xnnode.h" +#include "xnodt.h" +#include "xndomdocument.h" +#include "xnpointerarray.h" +#include "xneditor.h" +#include "xnnodeappif.h" +#include "xnviewdata.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// TXnUiEngineAppIf::TXnUiEngineAppIf +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +TXnUiEngineAppIf::TXnUiEngineAppIf( CXnUiEngine& aUiEngine ) + { + iUiEngine = &aUiEngine; + } + +// ----------------------------------------------------------------------------- +// TXnUiEngineAppIf::RootNode +// Forwards the call to the ui engine implementation +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnNodeAppIf& TXnUiEngineAppIf::RootNodeL() + { + return iUiEngine->RootNode()->AppIfL(); + } + +// ----------------------------------------------------------------------------- +// TXnUiEngineAppIf::FindNodeByIdL +// Forwards the call to the ui engine implementation +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnNodeAppIf* TXnUiEngineAppIf::FindNodeByIdL( + const TDesC& aNodeId, + const TDesC& aNamespace ) + { + CXnNode* node( iUiEngine->FindNodeByIdL( aNodeId, aNamespace ) ); + + if ( node ) + { + return &( node->AppIfL() ); + } + + return NULL; + } + +// ----------------------------------------------------------------------------- +// TXnUiEngineAppIf::FindNodeByIdL +// Forwards the call to the ui engine implementation +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnNodeAppIf* TXnUiEngineAppIf::FindNodeByIdL( + const TDesC8& aNodeId, + const TDesC8& aNamespace ) + { + CXnNode* node( iUiEngine->FindNodeByIdL( aNodeId, aNamespace ) ); + + if ( node ) + { + return &( node->AppIfL() ); + } + + return NULL; + } + +// ----------------------------------------------------------------------------- +// TXnUiEngineAppIf::FindNodeByClassL +// Forwards the call to the ui engine implementation +// ----------------------------------------------------------------------------- +// +EXPORT_C RPointerArray< CXnNodeAppIf > TXnUiEngineAppIf::FindNodeByClassL( + const TDesC& aClassId, const TDesC& aNamespace ) + { + CXnPointerArray* array = iUiEngine->FindNodeByClassL( + aClassId, aNamespace ); + CleanupStack::PushL( array ); + RPointerArray< CXnNodeAppIf > interfaceArray; + CleanupClosePushL( interfaceArray ); + const TInt count = array->Container().Count(); + interfaceArray.ReserveL( count ); + for ( TInt i = 0; i < count; ++i ) + { + CXnNode* node = static_cast< CXnNode* >( array->Container()[i] ); + // Append cannot fail because ReserveL call before this loop has + // allocated the array buffer + interfaceArray.Append( &( node->AppIfL() ) ); + } + CleanupStack::Pop( &interfaceArray ); + CleanupStack::PopAndDestroy( array ); + return interfaceArray; + } + +// ----------------------------------------------------------------------------- +// CXnUiEngine::FindNodeByClassL +// Forwards the call to the ui engine implementation +// ----------------------------------------------------------------------------- +// +EXPORT_C RPointerArray< CXnNodeAppIf > TXnUiEngineAppIf::FindNodeByClassL( + const TDesC8& aClassId, const TDesC8& aNamespace ) + { + CXnPointerArray* array = iUiEngine->FindNodeByClassL( + aClassId, aNamespace ); + CleanupStack::PushL( array ); + RPointerArray< CXnNodeAppIf > interfaceArray; + CleanupClosePushL( interfaceArray ); + const TInt count = array->Container().Count(); + interfaceArray.ReserveL( count ); + for ( TInt i = 0; i < count; ++i ) + { + CXnNode* node = static_cast< CXnNode* >( array->Container()[i] ); + // Append cannot fail because ReserveL call before this loop has + // allocated the array buffer + interfaceArray.Append( &( node->AppIfL() ) ); + } + CleanupStack::Pop( &interfaceArray ); + CleanupStack::PopAndDestroy( array ); + return interfaceArray; + } + +// ----------------------------------------------------------------------------- +// CXnUiEngine::FindContentSourceNodesL +// Forwards the call to the ui engine implementation +// ----------------------------------------------------------------------------- +// +EXPORT_C RPointerArray< CXnNodeAppIf > TXnUiEngineAppIf::FindContentSourceNodesL( + const TDesC8& aNamespace ) + { + CXnPointerArray* array = iUiEngine->FindContentSourceNodesL( aNamespace ); + CleanupStack::PushL( array ); + + RPointerArray< CXnNodeAppIf > interfaceArray; + CleanupClosePushL( interfaceArray ); + + const TInt count = array->Container().Count(); + interfaceArray.ReserveL( count ); + + for ( TInt i = 0; i < count; i++ ) + { + CXnNode* node = static_cast< CXnNode* >( array->Container()[i] ); + // Append cannot fail because ReserveL call before this loop has + // allocated the array buffer + interfaceArray.Append( &( node->AppIfL() ) ); + } + + CleanupStack::Pop( &interfaceArray ); + CleanupStack::PopAndDestroy( array ); + return interfaceArray; + } + +// ----------------------------------------------------------------------------- +// TXnUiEngineAppIf::RenderUIL +// Forwards the call to the ui engine implementation +// ----------------------------------------------------------------------------- +// +EXPORT_C void TXnUiEngineAppIf::RenderUIL( CXnNodeAppIf* aNode ) + { + CXnNode* node = NULL; + if ( aNode != NULL ) + { + node = &( aNode->Node() ); + } + iUiEngine->RenderUIL( node ); + } + +// ----------------------------------------------------------------------------- +// TXnUiEngineAppIf::StringPool +// Forwards the call to the ui engine implementation +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnDomStringPool& TXnUiEngineAppIf::StringPool() + { + return *iUiEngine->ODT()->DomDocument().StringPool(); + } + +// ----------------------------------------------------------------------------- +// TXnUiEngineAppIf::ActiveView +// Return the active view +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnNodeAppIf* TXnUiEngineAppIf::ActiveView() + { + CXnNodeAppIf* ret( NULL ); + TRAP_IGNORE( ret = &( iUiEngine->ActiveView()->AppIfL() ) ); + return ret; + } + +// ----------------------------------------------------------------------------- +// TXnUiEngineAppIf::RefreshMenuL +// Refresh current menu +// ----------------------------------------------------------------------------- +// +EXPORT_C void TXnUiEngineAppIf::RefreshMenuL() + { + iUiEngine->RefreshMenuL(); + } + +// ----------------------------------------------------------------------------- +// TXnUiEngineAppIf::IsMenuDisplaying +// Checks whether the menu is displaying or not. +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool TXnUiEngineAppIf::IsMenuDisplaying() + { + return iUiEngine->IsMenuDisplaying(); + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt TXnUiEngineAppIf::GetPluginNodeArrayL( + RPointerArray< CXnNodeAppIf >& aArray ) + { + aArray.Reset(); + RPointerArray< CXnNode >* plugins = iUiEngine->Plugins(); + if ( !plugins ) + { + return 0; + } + TInt count( plugins->Count() ); + for ( TInt i = 0; i < count; ++i ) + { + CXnNode* tmp = ( *plugins )[i]; + aArray.AppendL( &( tmp->AppIfL() ) ); + } + return count; + } + +// ----------------------------------------------------------------------------- +// TXnUiEngineAppIf::FocusedNode +// Gets the currently focused node +// ----------------------------------------------------------------------------- +// +EXPORT_C CXnNodeAppIf* TXnUiEngineAppIf::FocusedNode() + { + CXnNode* focused( iUiEngine->FocusedNode() ); + CXnNodeAppIf* ret( NULL ); + + if ( focused ) + { + TRAP_IGNORE( ret = &( focused->AppIfL() ) ); + } + + return ret; + } + +// ----------------------------------------------------------------------------- +// TXnUiEngineAppIf::IsEditMode +// Returns ETrue if the current mode is edit, otherwise EFalse. +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool TXnUiEngineAppIf::IsEditMode() + { + return ( iUiEngine->IsEditMode() ); + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +EXPORT_C void TXnUiEngineAppIf::SetUiEngine( CXnUiEngine* aUiEngine ) + { + iUiEngine = aUiEngine; + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt TXnUiEngineAppIf::GetThemeResource( + const TDesC& aPath, RFile& aFile ) + { + return iUiEngine->GetThemeResource( aPath, aFile ); + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool TXnUiEngineAppIf::WidgetsVisible() const + { + return iUiEngine->Editor()->WidgetsVisible(); + }