// webpidll.h
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//

// Definition of APIs for Plug-In implementations
//
//-----------------------------------------------------------------------------
// $Modtime:   24 Mar 1999 13:48:00  $  $Revision:   1.22  $  $Author:   davidh  $
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------

#if !defined(__WEBPIDLL_H__)
#define __WEBPIDLL_H__

//System includes
#if !defined(__E32STD_H__)
#include <e32std.h>
#endif
#if !defined(__E32UID_H__)
#include <e32uid.h>
#endif

_LIT(KHTMLBodyTag,"BODY");
_LIT(KHTMLTag,"HTML");
_LIT(KHTMLFramesetTag,"FRAMESET");

// System required parameters
_LIT(KPIName,"PIName");
_LIT(KPIVendor,"PIVendor");
_LIT(KPIVersion, "PIVersion");
_LIT(KPIURL, "PIURL");
_LIT(KPICopyright, "PICopyright");
_LIT(KPIMarkupLang, "PIMarkupLang");
_LIT(KPITagName, "PITagName");
_LIT(KPIMimeType, "PIMimeType");
_LIT(KPIMarkupLangVersion, "PIMarkupLangVersion");
_LIT(KPIType, "PIType");
_LIT(KPILoading, "PILoading");
_LIT(KPIResourceFileName, "PIResourceFileName");
_LIT(KPIIniFileName, "PIIniFileName");
_LIT(KPIHasSettingsDialog, "PIHasSettingsDialog");

#define __PI_NAME KPIName
#define __PI_VENDOR KPIVendor
#define __PI_VERSION KPIVersion
#define __PI_URL KPIURL
#define __PI_COPYRIGHT KPICopyright
#define __PI_MARKUPLANG KPIMarkupLang
#define __PI_TAGNAME KPITagName
#define __PI_MIMETYPE KPIMimeType
#define __PI_MARKUPLANGVERSION KPIMarkupLangVersion
#define __PI_TYPE KPIType
#define __PI_LOADING KPILoading
#define __PI_RESOURCEFILENAME KPIResourceFileName
#define __PI_INIFILENAME KPIIniFileName
#define __PI_HASSETTINGSDIALOG KPIHasSettingsDialog


//Local includes
#if !defined(__WEBPLGIN_H__)
#include "webplgin.h"
#endif

//Forward declarations
class CWebPlugInData;
class MWebPlugInRegistrationAPI;
class MWebPlugIn;
class CWebModel;
struct TPlugInAllParams;

//Constants
#if defined(_UNICODE)
#define KUidWebUIPlugin KUidWebUIPlugin16
#define KUidWebEngPlugin KUidWebEngPlugin16
#else
#define KUidWebUIPlugin KUidWebUIPlugin8
#define KUidWebEngPlugin KUidWebEngPlugin8
#endif
const TInt KUidWebUIPlugin8 = 0x10000FC2;
const TInt KUidWebUIPlugin16 = 0x10000FD2;
const TInt KUidWebEngPlugin8 = 0x10000FCE;
const TInt KUidWebEngPlugin16 = 0x10000FD3;

const TInt KPIDataDescriptorLength=50;
const TInt KPIDataLongDescriptorLength=250;


enum TWebPlugInType
	{
	EWebPIMarkupTag,	//Engine markup language renderer
	EWebPIMIMEType,		//Engine mime type renderer
	EWebPIUI,				//UI plug in component
	EWebPIScript          // Nothing is currently done with script type PIs
	};

enum TWebPlugInLoading
	{
	EWebPILoadAlways,		//Load PI at startup, keep loaded
	EWebPILoadTransient,	//Load when required, unload
	EWebPILoadPersistent	//Load when required, keep loaded
	};

//-----------------------------------------------------------------------------

class MWebPlugInDllInterface
	{
public:
	virtual TInt HowManyPlugIns()=0;
	virtual void ConstructL(CWebModel* aModel)=0;
	virtual void ConstructForRegistrationL(CWebModel* aModel)=0;
	virtual void GetPlugInL(MWebPlugInRegistrationAPI*& aPlugIn, TInt aIndex)=0;
	virtual void GetPlugInL(MWebPlugIn*& aPlugIn, TInt aIndex, TInt aFrameID, MWebPlugIn* aContainer, TPlugInAllParams* aRegistryInfo, CWebModel* aModel)=0;
	virtual void GetPlugInL(MWebUIPlugIn*& aPlugIn, TInt aIndex,TPlugInAllParams* aRegistryInfo, CWebModel* aModel)=0;
	virtual CBase* CBasePtr() = 0;
	};

//-----------------------------------------------------------------------------

class MWebPlugInRegistrationAPI
	{
public:
	// Getter functions for PI parameters (implemented like this to be expandable)
	virtual void GetDescriptorParamL (const TDesC& aParam, HBufC*& aValue)=0;
	virtual void GetNarrowDescriptorParamL (const TDesC& aParam, HBufC8*& aValue)=0;
	virtual void GetIntegerParam (const TDesC& aParam, TInt* aValue)=0;
	virtual void GetVersionParam (const TDesC& aParam, TVersion* aValue)=0;
	virtual void GetBoolParam (const TDesC& aParam, TBool* aValue)=0;
	virtual CBase* RegCBasePtr() = 0;
	};

#endif  //!defined(__WEBPIDLL_H__)
