homescreen_plat/hs_renderingplugin_api/inc/xnextrenderingpluginadapter.h
branchRCL_3
changeset 34 5456b4e8b3a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreen_plat/hs_renderingplugin_api/inc/xnextrenderingpluginadapter.h	Wed Sep 01 12:32:46 2010 +0100
@@ -0,0 +1,190 @@
+/*
+* Copyright (c) 2009-2010 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:  External rendering plugin adapter
+*
+*/
+
+#ifndef XNEXTRENDERINGPLUGINADAPTER_H
+#define XNEXTRENDERINGPLUGINADAPTER_H
+
+// System includes
+#include <e32base.h>
+#include <ecom/ecom.h>
+#include <coecntrl.h>
+
+// User includes
+
+class MXnExtEventHandler;
+
+/**
+ *  Base class for the external rendering plug-ins. Widget developer
+ *  can implement own rendering plug-in if stock plug-ins do not
+ *  provide sufficient functionality. Baddly written plug-in can 
+ *  ruin the Homescreen performance as it runs in the Homescreen
+ *  process. Power save mode must be obeyed in order to maximize
+ *  the standby times of the device.
+ *
+ *  @code
+ *  // External rendering plug-in mandatory functions
+ *  T_RenderingPlugin* T_RenderingPlugin::NewL()
+ *      {
+ *      T_RenderingPlugin* self = T_RenderingPlugin::NewLC();
+ *      CleanupStack::Pop( self );
+ *      return self;
+ *      }
+ *  //
+ *  T_RenderingPlugin* T_RenderingPlugin::NewLC()
+ *      {
+ *      T_RenderingPlugin* self = new( ELeave ) T_RenderingPlugin();
+ *      CleanupStack::PushL( self );
+ *      self->ConstructL();
+ *      return self;
+ *      }
+ *  //
+ *  T_RenderingPlugin::~T_RenderingPlugin()
+ *      {
+ *      }
+ * //
+ *  T_RenderingPlugin::T_RenderingPlugin()
+ *      {
+ *      // Do nothing
+ *      }
+ *  //
+ *  void T_RenderingPlugin::ConstructL()
+ *      {
+ *      }
+ *  //
+ *  const TImplementationProxy KImplementationTable[] =
+ *     {
+ *  #ifdef __EABI__
+ *      IMPLEMENTATION_PROXY_ENTRY( 0x22334455, T_RenderingPlugin::NewL )
+ *  #else
+ *      { { 0x22334455 }, T_RenderingPlugin::NewL }
+ *  #endif
+ *     };
+ *  //
+ *  EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
+ *      TInt& aTableCount )
+ *      {
+ *      aTableCount = sizeof( KImplementationTable ) / sizeof( TImplementationProxy );
+ *      return KImplementationTable;
+ *      }
+ *  
+ *  @endcode
+ *
+ *  @lib extrenderingplugin.lib
+ *  @since S60 v5.2
+ */
+class CXnExtRenderingPluginAdapter : public CCoeControl
+    {
+public: // Constructor and destructor
+    /**
+     * Two-phased constructor.
+     *
+     * @since Series 60 5.2
+     */
+    IMPORT_C static CXnExtRenderingPluginAdapter* NewL( TUid aImplUid );
+
+    /**
+     * Destructor.
+     *
+     * @since Series 60 5.2
+     */
+    IMPORT_C virtual ~CXnExtRenderingPluginAdapter();  
+
+public: // New functions,
+
+    /**
+     * Returns the ECOM implementation uid.
+     *
+     * @since Series 60 5.2
+     */
+    IMPORT_C TUid ImplUid() const;
+
+    /**
+     * Is called when Homescreen enters power save mode.
+     * In power save mode all the timers, outstanding requests and animations
+     * must be cancelled in order to save battery.
+     *
+     * @since Series 60 5.2
+     */
+    IMPORT_C virtual void EnterPowerSaveModeL();
+
+    /**
+     * Is called when Homescreen exists power save mode.
+     *
+     * @since Series 60 5.2
+     */    
+    IMPORT_C virtual void ExitPowerSaveModeL();
+
+    /**
+     * Informs skin change. If plug-in is responsible of loading skin
+     * graphics, all the graphics must be reloaded.
+     *
+     * @since Series 60 5.2
+     */    
+    IMPORT_C virtual void SkinChanged();
+    
+    /**
+     * Informs that plug-in element has gained a focus and highlight must be
+     * drawn if appropriate.
+     *
+     * @since Series 60 5.2
+     * @param aDrawNow whether plug-in should draw itself.
+     */
+    IMPORT_C virtual void FocusChanged( TDrawNow aDrawNow );
+    
+    /**
+     * Informs that plug-in element size has changed. Size can change if the
+     * plug-in element is declared relatively to parent element.
+     *
+     * @since Series 60 5.2
+     */
+    IMPORT_C virtual void SizeChanged();
+    
+    /**
+     * Sets the external event handler interface.
+     *
+     * @since Series 60 5.2
+     * @param aEventHandler Event handler interface.
+     */
+    IMPORT_C virtual void SetEventHandler( MXnExtEventHandler* aEventHandler );
+    
+    /**
+     * Routes the data stream for the external rendering plugin.
+     *
+     * @since Series 60 5.2
+     * @param aData Data stream.
+     * @param aType Type of the stream.
+     * @param aIndex Index of the data.
+     */
+    IMPORT_C virtual void SetDataL( const TDesC8& aData, const TDesC& aType, TInt aIndex );
+
+private: // Data
+
+    /**
+     * Destruct key
+     */
+    TUid iDestructKey;
+    
+    /**
+     * Implementation UID
+     */
+    TUid iImplUid;
+    };
+
+
+#endif // XNEXTRENDERINGPLUGINADAPTER_H
+
+// End of file