--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dlnasrv_plat/upnp_plugin_api/inc/upnpplugininterface.h Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,256 @@
+/** @file
+* Copyright (c) 2006-2007 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: Interface for ECom plugins
+*
+*/
+
+
+
+#ifndef C_UPNPPLUGININTERFACE_H
+#define C_UPNPPLUGININTERFACE_H
+
+// INCLUDE FILES
+#include <e32base.h>
+
+
+// FORWARD DECLARATIONS
+class CGulIcon;
+
+// CONSTANT DEFINITIONS
+const TUid interfaceUid = { 0x200075DD };
+
+
+
+/**
+ * This event is sent from plugins to the MUPnPPluginObserver
+ *
+ * @since S60 3.2
+ */
+enum TExtensionEvent
+ {
+ // the extension is enabled by default - no need to call explicitly
+ EExtensionEnabled = 0x0001,
+ // when called, disables the item in the list, cannot execute
+ EExtensionDisabled = 0x0002,
+ // will call GetIcon again, and redraw
+ EExtensionIconChanged = 0x0010,
+ // will call GetTitle again, and redraw
+ EExtensionTitleChanged = 0x0020,
+ // will call GetSubTitle again, and redraw
+ EExtensionSecondaryTextChanged = 0x0040,
+ // extension which was ExecuteL'd, has been closed.
+ EExtensionClosed = 0x0100
+ };
+
+
+/**
+ * Implemented by CUPnPPluginLoader
+ *
+ * @since S60 3.2
+ */
+class MUPnPPluginObserver
+ {
+public:
+
+ /**
+ * Called by plugins when it needs updating.
+ *
+ * @since S60 3.2
+ * @param aEvent event type sent from plugin
+ */
+ virtual void ExtensionEvent(const TExtensionEvent& aEvent)=0;
+
+ /**
+ * Virtual destructor
+ *
+ * @since S60 3.2
+ */
+ virtual ~MUPnPPluginObserver() {}
+
+ };
+
+
+/**
+ * ECom interface class which all home connect plugins have to implement.
+ *
+ * IMPORTANT!!!
+ *
+ * Following methdods and attribute have to be implemented in the implementing
+ * class as well so that observer argument can be passed correctly.
+ * Example is given from all methods.
+ *
+ * private:
+ * // attribute
+ * MUPnPPluginObserver* iPluginObserver;
+ *
+ * // constructor
+ * // constructor has to be inherited from the interface constructor
+ * // the following way
+ * CUPnPPluginImplementation(TAny* aEcomArguments)
+ * : CUPnPPluginInterface( aEcomArguments ) {}
+ *
+ * // ConstructL
+ * // ConstructL has to set its argument to the attribute
+ * void ConstructL(MUPnPPluginObserver* aPluginObserver)
+ * {
+ * iPluginObserver = aPluginObserver;
+ * }
+ *
+ * public:
+ * // NewL
+ * // This has to give its argument to the constructor and pass it to
+ * // ConstructL as well
+ * static CUPnPPluginImplementation* NewL(MUPnPPluginObserver*
+ * aPluginObserver)
+ * {
+ * CUPnPPluginImplementation* self = new(ELeave)
+ * CUPnPPluginImplementation( aPluginObserver );
+ * CleanupStack::PushL( self );
+ * self->ConstructL( aPluginObserver );
+ * CleanupStack::Pop( self );
+ * return self;
+ * }
+ *
+ *
+ */
+class CUPnPPluginInterface : public CBase
+ {
+public:
+
+ /**
+ * Creates instance of ECom plugin implementation which corresponds
+ * the parameter aUid.
+ *
+ * @since S60 3.2
+ * @param aUid - Uid of the plugin implementation
+ * @param aPluginObserver - Call back to CUPnPPluginLoader
+ * @return Instance of CUPnPPluginInterface
+ */
+ static CUPnPPluginInterface* NewL(TUid aUid,
+ MUPnPPluginObserver& aPluginObserver);
+
+ /**
+ * Informs to ECom that it has been destroyed.
+ *
+ * @since S60 3.2
+ */
+ virtual ~CUPnPPluginInterface();
+
+ //-------------------------------------------------------------------
+ // ECom interface methods
+ //-------------------------------------------------------------------
+ /**
+ * Returns reference to the icon of the plugin
+ *
+ * @since S60 3.2
+ * @return Reference to the icon of the plugin
+ */
+ virtual const CGulIcon& GetIcon()=0;
+
+ /**
+ * Returns const reference to the icon of the plugin
+ *
+ * @since S60 3.2
+ * @return const reference to the title of the plugin
+ */
+ virtual const TDesC& GetTitle()=0;
+
+ /**
+ * Returns const reference to the scondary text of the plugin
+ *
+ * @since S60 3.2
+ * @return const reference to the secondary text of the plugin
+ */
+ virtual const TDesC& GetSecondaryText()=0;
+
+ /**
+ * Executes the plugin
+ *
+ * @since S60 3.2
+ */
+ virtual void ExecuteL()=0;
+
+ /**
+ * Checks if the plugin needs upnp configuration (set IAP)
+ *
+ * @since S60 3.2
+ * @return Information whether plugin needs upnp configuration
+ */
+ virtual TBool RequiresUpnpConfiguration()=0;
+
+protected:
+ /**
+ * Constructor. Sets plugin observer.
+ *
+ * @since S60 3.2
+ * @param aPluginObserver - reference to CUPnPPluginObserver
+ */
+ CUPnPPluginInterface(TAny* aEcomArguments);
+
+private:
+
+ /**
+ * Uid of the plugin
+ */
+ TUid iDtor_ID_Key;
+
+ /**
+ * Pointer to the plugin observer which handles the events plugin sends
+ *
+ * Not owned.
+ */
+ MUPnPPluginObserver& iPluginObserver;
+ };
+
+
+// inline methods
+
+// ----------------------------------------------------------------------------
+// CUPnPPluginInterface::NewL
+// Constructor
+// ----------------------------------------------------------------------------
+inline CUPnPPluginInterface* CUPnPPluginInterface::NewL(TUid aUid,
+ MUPnPPluginObserver& aPluginObserver)
+ {
+ TAny* arg = reinterpret_cast<TAny*>(&aPluginObserver);
+ TAny* interface = REComSession::CreateImplementationL(aUid,
+ _FOFF(CUPnPPluginInterface,iDtor_ID_Key),arg);
+ CUPnPPluginInterface* retval =
+ REINTERPRET_CAST(CUPnPPluginInterface*,interface);
+ return retval;
+ }
+
+// ----------------------------------------------------------------------------
+// CUPnPPluginInterface::~CUPnPPluginInterface
+// Destructor
+// ----------------------------------------------------------------------------
+inline CUPnPPluginInterface::~CUPnPPluginInterface()
+ {
+ REComSession::DestroyedImplementation( iDtor_ID_Key );
+ }
+
+// ----------------------------------------------------------------------------
+// CUPnPPluginInterface::CUPnPPluginInterface
+// Constructor
+// ----------------------------------------------------------------------------
+inline CUPnPPluginInterface::CUPnPPluginInterface(TAny* aEcomArguments)
+ : iPluginObserver(*(reinterpret_cast<MUPnPPluginObserver*>
+ (aEcomArguments)))
+ {
+ }
+
+
+#endif // C_UPNPPLUGININTERFACE_H
+
+// end of file