// FXPREVOP.H
//
// Copyright (C) Symbian Ltd 1998
//

// MODULE - Fax Preview operation
//          Prepares messages to send (rendering fax)
//          before valunching viewer

#if !defined(__FXPREVOP_H__)
#define __FXPREVOP_H__

#if !defined(__MSVAPI_H__)
#include <MSVAPI.H>
#endif

#if !defined(__FXPROP_H__)
#include "fxprop.H"
#endif

class TFaxPreviewOperationProgress
	{
public:
	TInt iId;
	enum TFaxPreviewOperationState
		{
		ERenderingMessage,
		EViewingMessage,
		EFinish
		} iState;

	TFaxRenderOperationProgress	iRenderProgress;
	};

class CFaxPreviewOperation : public CMsvOperation
	{
public:
	// --- Construction ---
	static CFaxPreviewOperation* NewL(CMsvSession& aMsvSession, TMsvId aFaxId, TInt aPriority, const TDesC& aViewApplication, TRequestStatus& aObserverRequestStatus);
	//
	// --- Destruction ---
	~CFaxPreviewOperation();

private:
	// --- Construction ---
	CFaxPreviewOperation(CMsvSession& aMsvSession, TMsvId aFaxId, TInt aPriority, TRequestStatus& aObserverRequestStatus);
	void ConstructL(const TDesC& aViewApplication);
	//
	// --- Completion handling ---
	void Complete(TInt aError);
	//
	// --- From CMsvOperation ---
	virtual const TDesC8& ProgressL();
	//
	// --- From CActive ---
	virtual void DoCancel();
	virtual void RunL();
	//
	// --- Message Viewing ---
	CMsvOperation* ViewL();
	//
	// --- Active steps ---
	void DoStepL();

private:
	// --- Data ---
	CMsvOperation*						iOperation;
	TMsvId								iFaxId;
	TFaxPreviewOperationProgress		iProgress;
	TPckg<TFaxPreviewOperationProgress>	iProgressBuffer;
	CMsvSession&						iSession;
	HBufC*								iViewerFilename;
	};

#endif // __FXPREVOP_H__