webengine/widgetengine/src/WidgetEngineBridge.cpp
changeset 0 dd21522fd290
child 13 10e98eab6f85
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/widgetengine/src/WidgetEngineBridge.cpp	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,290 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:  
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "WidgetEngineBridge.h"
+#include "WidgetEventHandler.h"
+#include <object.h>
+#include <eikamnt.h>
+#include <eikmenub.h>
+#include <gdi.h>
+#include <bitdev.h>
+#include "BrCtlInterface.h"
+#include "WidgetEngineCallbacks.h"
+
+#include "WidgetClient.h"
+#include "MenuClient.h"
+#include "Renderer.h"
+#include "Preferences.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+const TInt KMenuItemCommandIdBase = 20000;
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// ----------------------------------------------------------------------------
+// CreateWidgetEngineBridge
+// creates WidgetEngineBridge object
+//
+//
+// ----------------------------------------------------------------------------
+EXPORT_C MWidgetEngineBridge* CreateWidgetEngineBridge()
+    {
+    return new WidgetEngineBridge();
+    }
+
+
+// ----------------------------------------------------------------------------
+// WidgetEngineBridge::WidgetEngineBridge
+// Default constructor
+//
+//
+// ----------------------------------------------------------------------------
+WidgetEngineBridge::WidgetEngineBridge() : m_menuclient(0), m_widgetclient(0), m_preferences(0)
+{
+}
+
+// ----------------------------------------------------------------------------
+// WidgetEngineBridge::~WidgetEngineBridge
+// Destructor
+//
+//
+// ----------------------------------------------------------------------------
+WidgetEngineBridge::~WidgetEngineBridge()
+{    
+    delete m_menuclient;
+    delete m_widgetclient;    
+    delete m_preferences;
+}
+
+// ----------------------------------------------------------------------------
+// WidgetEngineBridge::Widget
+// creates Widget object if it does not exist, otherwise returns the already
+// created instance
+//
+//
+// ----------------------------------------------------------------------------
+void* WidgetEngineBridge::Widget(MWidgetCallback& aWidgetCallback, MWidgetEngineCallbacks& aWidgetEngineCallback)
+{
+    if (!m_widgetclient) {
+        
+        if (!m_preferences)
+            m_preferences = new (ELeave) WidgetPreferences();
+        
+        m_widgetclient = CWidgetClient::NewL(aWidgetCallback,aWidgetEngineCallback,m_preferences);            
+    }    
+    return m_widgetclient->jswidget();  
+}
+
+// ----------------------------------------------------------------------------
+// WidgetEngineBridge::Menu
+// creates Menu object if it does not exist, otherwise returns the already
+// created instance
+//
+//
+// ----------------------------------------------------------------------------
+void* WidgetEngineBridge::Menu(MWidgetCallback& aWidgetCallback, MWidgetEngineCallbacks& aWidgetEngineCallback)
+{
+    if (!m_menuclient){
+        m_menuclient = CMenuClient::NewL(aWidgetCallback,aWidgetEngineCallback);      
+    }    
+    return m_menuclient->jsmenu();  
+}
+
+// ----------------------------------------------------------------------------
+// WidgetEngineBridge::MenuItem
+// creates MenuItem object if it does not exist, otherwise returns the already
+// created instance
+//
+//
+// ----------------------------------------------------------------------------
+void* WidgetEngineBridge::MenuItem(MWidgetCallback& aWidgetCallback, MWidgetEngineCallbacks& aWidgetEngineCallback)
+{
+    if (!m_menuclient){
+        m_menuclient = CMenuClient::NewL(aWidgetCallback,aWidgetEngineCallback);      
+    }    
+    return m_menuclient->jsmenuitem();      
+}
+
+// ----------------------------------------------------------------------------
+//WidgetEngineBridge::SetParamL
+//
+//
+// ----------------------------------------------------------------------------
+void WidgetEngineBridge::SetParamL(TBrCtlDefs::TBrCtlWidgetParams aParam, const TDesC& aValue)
+{   
+    if (!m_preferences)
+        m_preferences = new (ELeave) WidgetPreferences();
+
+    switch( aParam ) {
+        case TBrCtlDefs::EWidgetBasePath: {
+            m_preferences->setBasePathL(aValue);
+            m_preferences->loadL();            
+            break;
+        }
+        case TBrCtlDefs::EWidgetBundleId: {
+            m_preferences->setWidgetBundleId(aValue);
+            break;
+        }
+        default:
+        break;
+    }
+    
+}
+
+// ----------------------------------------------------------------------------
+// WidgetEngineBridge::SetParamL
+//
+//
+// ----------------------------------------------------------------------------
+void WidgetEngineBridge::SetParamL(TBrCtlDefs::TBrCtlWidgetParams aParam, TUint aValue)
+{   
+  
+    if (!m_preferences)
+        m_preferences = new (ELeave) WidgetPreferences();
+
+    switch( aParam ) {
+        case TBrCtlDefs::EWidgetIdentifier: {
+            m_preferences->setWidgetId(aValue);
+            break;
+        }
+        default:
+        break;
+    }
+
+}
+
+// ----------------------------------------------------------------------------
+// WidgetEngineBridge::HandleCommandL 
+//
+//
+// ----------------------------------------------------------------------------
+TBool WidgetEngineBridge::HandleCommandL( TInt aCommandId )
+{
+    TBool handled(EFalse);
+    
+    if (!handled && m_menuclient) {
+        handled = m_menuclient->HandleCommandL(aCommandId);
+    }
+    if (!handled && m_widgetclient) {
+        handled = m_widgetclient->HandleCommandL(aCommandId);
+    }
+    return handled;
+}
+
+// ----------------------------------------------------------------------------
+// WidgetEngineBridge::OnShowSelected
+// Invokes callback function when the menu item is selected
+//
+//
+// ----------------------------------------------------------------------------
+void WidgetEngineBridge::OnShowSelected()
+{
+    if (m_widgetclient) {
+        m_widgetclient->onShowSelected();
+    }
+}
+
+
+// ----------------------------------------------------------------------------
+// WidgetEngineBridge::OnHideSelected
+// Invokes callback function when the menu item is selected
+//
+//
+// ----------------------------------------------------------------------------
+void WidgetEngineBridge::OnHideSelected()
+{
+    if (m_widgetclient) {
+        m_widgetclient->onHideSelected();
+    }
+}
+
+
+// ----------------------------------------------------------------------------
+// WidgetEngineBridge::AddOptionMenuItemsL
+// 
+//
+//
+// ----------------------------------------------------------------------------
+void WidgetEngineBridge::AddOptionMenuItemsL(CEikMenuPane& aMenuPane, TInt aResourceId)
+{
+    if (m_menuclient) {
+        m_menuclient->addOptionMenuItemsL(aMenuPane, aResourceId);
+    }    
+}
+
+// ----------------------------------------------------------------------------
+// WidgetEngineBridge::MenuItemSelected
+// Invokes callback function when the menu item is selected
+//
+//
+// ----------------------------------------------------------------------------
+void WidgetEngineBridge::MenuItemSelected( TInt aInternalId )
+{
+    if (m_menuclient) {
+        m_menuclient->menuItemSelected(aInternalId-KMenuItemCommandIdBase);
+    }
+}
+
+// ----------------------------------------------------------------------------
+// WidgetEngineBridge::MenuShowed
+// Invokes callback function when Menu is displayed
+//
+//
+// ----------------------------------------------------------------------------
+void WidgetEngineBridge::MenuShowed()
+{
+    if (m_menuclient) {
+        m_menuclient->menuShowed();
+    }
+}
+
+// ----------------------------------------------------------------------------
+// WidgetEngineBridge::DrawTransition
+// 
+//
+//
+// ----------------------------------------------------------------------------
+void WidgetEngineBridge::DrawTransition(CWindowGc& gc, CFbsBitmap* fbsBm)
+{
+    if (m_widgetclient && m_widgetclient->renderer()) {
+        m_widgetclient->renderer()->drawTransition(gc,fbsBm);
+    }
+}
+
+
+//END OF FILE
+
+