// EIKPRTDG.H
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//

#if !defined(__EIKPRTDG_H__)
#define __EIKPRTDG_H__

#if !defined(__EIKDIALG_H__)
#include <eikdialg.h>
#endif

#if !defined(__GDI_H__)
#include <gdi.h>
#endif

#if !defined(__PRNINF_H__)
#include <prninf.h>
#endif

#if !defined(__FRMPAGE_H__)
#include <frmpage.h>
#endif

#if !defined(__FLDBLTIN_H__)
#include <fldbltin.h>
#endif

#if !defined(__EIKMOBS_H__)
#include <eikmobs.h>
#endif

#if !defined(__EIKMFNE_H__)
#include <eikmfne.h>
#endif

#if !defined(__PDRPORT_H__)
#include <pdrport.h>
#endif

#if !defined (__EIKENV_H__)
#include <eikenv.h>
#endif

class CPrintSetup;
class CPrinterDriverUI;

//
// class CEikPageSetupDialog
//

class CEikPageSetupDialog : public CEikDialog, private MEikMenuObserver
    {
public:
    IMPORT_C CEikPageSetupDialog(CPrintSetup* aPrintSetup);
private: // inherited and overridden
	void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane);
	void PreLayoutDynInitL();
    TBool OkToExitL(TInt aButtonId);
	void HandleControlStateChangeL(TInt aControlId);
	void ProcessCommandL(TInt aCommand);
	void SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis);
private: // internal use
	TInt FindPageSizeNameIndex(const TSize aSize);
	TSize FindPageSizeInPortraitFormat(TInt aPageSizeNameIndex);
	void ValidateFocusControlL();
private:
    CPrintSetup* iPrintSetup;
	TPageSpec iPageSpecInTwips;
	TMargins iPageMarginsInTwips;
	TPrintParameters iPrintParams;
	TBool iSizeChanged;
    };


class TSerialPrinterPortConfig;

//
// Class CEikPrinterSetupDialog
//

class CEikPrinterSetupDialog : public CEikDialog
    {
public:
    IMPORT_C CEikPrinterSetupDialog(CPrintSetup* aPrintSetup,TUid& aUid);
    IMPORT_C ~CEikPrinterSetupDialog();
private: // inherited and overridden
	void PreLayoutDynInitL();
    TBool OkToExitL(TInt aButtonId);
	void HandleControlStateChangeL(TInt aControlId);
private:
	void RunFileDialogL();
	void RunSerialPortDialog();
	void UpdatePortControlL();
	void DisplayDevicePropertiesButtonL();
private:
	CDesCArray* iArray;
	CPrintSetup* iPrintSetup;
	CPrintSetup* iTempPrintSetup;
	CPrinterDriverUI* iPrinterDriverUi;
	TUid& iUid;
    };

//
// Class CEikPrintProgressDialog
//

class CEikPrintProgressDialog : public CEikDialog, private MPrintProcessObserver
    {
public:
    IMPORT_C CEikPrintProgressDialog(CPrintSetup* aPrintSetup, MPageRegionPrinter* aPageRegionPrinter,const TPrintParameters& aPrintParameters);
	IMPORT_C ~CEikPrintProgressDialog();
private: // inherited and overridden
	void PreLayoutDynInitL();
    TBool OkToExitL(TInt aButtonId);
	void NotifyPrintStarted(TPrintParameters aPrintParams);
	void NotifyPrintEnded(TInt anErrorCode);
	void NotifyBandPrinted(TInt aPercentageOfPagePrinted, TInt aCurrentPageNum, TInt aCurrentCopyNum);
	void DisplayErrorMessage(TInt aErrCode,TDes& aDes);
private:
	CPrintSetup* iPrintSetup;
	MPageRegionPrinter* iPageRegionPrinter;
	TPrintParameters iPrintParameters;
	TEikPortFlag iPortFlag;
	};
  
//
// Class CEikPaginateDialog
//

class CEikPaginateDialog : public CEikDialog, public MPaginateObserver
    {
public:
	IMPORT_C CEikPaginateDialog(CTextPaginator* aPaginator);
private: // inherited and overridden
	void PreLayoutDynInitL();
	void PostLayoutDynInitL();
    TBool OkToExitL(TInt aButtonId);
private: //from MPaginateObserver
	void NotifyCompletion();
	void NotifyError(TInt anErrorCode);
	void NotifyPageCompletion(TInt aCurrentPageNum);
private:
	CTextPaginator* iPaginator;
    };

//
// class CEikSerialPortDialog
//

class CEikSerialPortDialog : public CEikDialog
    {
public:
	IMPORT_C CEikSerialPortDialog();
private: // inherited and overridden
	void PostLayoutDynInitL();
    TBool OkToExitL(TInt aButtonId);
private:
	void FindIndexFromParity();
	void FindIndexFromDataBits();
	void FindIndexFromBaudRate();
	void FindParityFromIndex();
	void FindDataBitsFromIndex();
	void FindBaudRateFromIndex();
private:
	TSerialPrinterPortConfig iConfig;
    };

//													   
// class CEikPrintRangeDialog
//

class CEikPrintRangeDialog : public CEikDialog
    {
public:
    IMPORT_C CEikPrintRangeDialog(TPrintParameters& iPrintParameters,CPrintSetup* aPrintSetup,TUid& aUid,TBool aPrintButton=EFalse);
public:
	IMPORT_C void SetTextForOkButtonL();
	IMPORT_C void SetPrinterNameL();
private: // inherited and overridden
	IMPORT_C void PreLayoutDynInitL();
    IMPORT_C TBool OkToExitL(TInt aButtonId);
	IMPORT_C void HandleControlStateChangeL(TInt aControlId);
public: // dialogs which derive from this dialog can have access to the data members
	TPrintParameters* iPrintParameters;
	SEikRange iPageRange;
	CPrintSetup* iPrintSetup;
    TBool iPrintButton;
	TUid& iUid;
	};

#endif
