// WEBCONFC.H
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//

#if !defined(__WEBCONFC_H__)
#define __WEBCONFC_H__

#if !defined(__E32STD_H__)
#include <e32std.h>
#endif
#if !defined(__E32BASE_H__)
#include <e32base.h>
#endif
#if !defined(__W32STD_H__)
#include <w32std.h>
#endif
#if !defined(__COEDEF_H__)
#include <coedef.h>
#endif

#if defined(_UNICODE)
#define KUidWebFormUI KUidWebFormUI16
#else
#define KUidWebFormUI KUidWebFormUI8
#endif

const TInt KUidWebFormUI16Value=0x10003D1A;
const TUid KUidWebFormUI16={KUidWebFormUI16Value};
const TInt KUidWebFormUI8Value=0x10000FC1;
const TUid KUidWebFormUI8={KUidWebFormUI8Value};

class MDesC8Array;
class MFormControlObserver;
class CCoeControl;
class CHtmlFormControl;
class CHtmlFormCheckBox;
class CHtmlFormButton;
class CHtmlFormData;


class CHtmlFormControlFactory : public CBase
	{
public:
	enum THtmlFormControlType
		{
		ECheckBox,
		ERadioButton,
		ESelectMenu,
		EMultiSelectMenu,
		ETextBox,
		ETextArea,
		EPassword,
		EButton,
		EImageButton,
		EFileEntry
		};
	union TControlFactoryDataUnion
		{
		const TAny* Any;
		const TBool* Bool;
		const TPtrC* PtrC;
		MDesC8Array* DesCArray;
		};
public:
	virtual CHtmlFormControl* CreateHtmlFormControlL(THtmlFormControlType aType,MFormControlObserver* aObserver
															,RWindow* aWindow,TSize& aSize,CHtmlFormData* aData)=0;
	};

union THtmlFormControlDataUnion1
	{
	const TAny* Any;
	const TInt* Int;
	const TBool* Bool;
	const TPtrC* PtrC;
	HBufC* BufC;
	};

class CHtmlFormControl;
class MFormControlObserver
	{
public:
	virtual void HandleStateChangeL(CHtmlFormControl* aControl)=0;
	virtual void MakeVisibleL(CHtmlFormControl* aControl,const TRect* aRect)=0;
	};

class CHtmlFormControl : public CBase
	{
public:
	
	enum TLogicalColor 
		{
		EBackgroundColor,
		ETextColor
		};

	virtual void SetExtentL(TRect& aLocation)=0;
	//virtual TRect Extent() const=0;
	virtual void HandlePointerEventL(const TPointerEvent& aPointerEvent)=0;
	virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)=0;
	virtual void DrawL() const=0;
	virtual void DrawToPrinterL(CGraphicsContext& aGc,const TPoint* aTopLeft, const TRect& aClipRect,const MGraphicsDeviceMap* aMap) const=0;
	virtual void SetFocusL(TBool aFocus)=0;
	virtual void SetStateL(const CHtmlFormData* aData)=0;
	virtual void GetStateL(CHtmlFormData* aData) const=0;
	virtual void SetColorL(TLogicalColor aLogicalColor, TRgb aColor)=0;
	virtual void SetFontL(CFont* aFont)=0;
	IMPORT_C virtual void CHtmlFormControl_Reserved1();
	IMPORT_C virtual void CHtmlFormControl_Reserved2();
	IMPORT_C virtual void CHtmlFormControl_Reserved3();
	};

#endif
