idlehomescreen/xmluirendering/uiengine/src/xnuiengineappif.cpp
changeset 0 f72a12da539e
child 2 08c6ee43b396
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengineappif.cpp	Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,318 @@
+/*
+* 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::FindNodeByClassL
+// Forwards the call to the ui engine implementation
+// -----------------------------------------------------------------------------
+//
+EXPORT_C RPointerArray< CXnNodeAppIf > TXnUiEngineAppIf::FindContentSourceNodesL(
+    const TDesC8& aNamespace )
+    {
+    RPointerArray< CXnNodeAppIf > interfaceArray;
+    CleanupClosePushL( interfaceArray );
+
+    CXnViewManager* manager( iUiEngine->ViewManager() );
+
+    CXnPluginData* data( manager->ActiveViewData().Plugin( aNamespace ) );
+
+    if ( data )
+        {
+        RPointerArray< CXnNode > nodes;
+        CleanupClosePushL( nodes );
+
+        data->ContentSourceNodesL( nodes );
+
+        for ( TInt i = 0; i < nodes.Count(); i++ )
+            {
+            interfaceArray.AppendL( &nodes[i]->AppIfL() );
+            }
+
+        CleanupStack::PopAndDestroy( &nodes );
+        }
+
+    CleanupStack::Pop( &interfaceArray );
+
+    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::ActivateViewL
+// Activate a view
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TXnUiEngineAppIf::ActivateViewL( CXnNodeAppIf& aViewNode )
+    {
+    iUiEngine->ActivateViewL( aViewNode.Node() );
+    }
+
+// -----------------------------------------------------------------------------
+// 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();
+    }