|
|
/*++
Copyright (C) Microsoft Corporation, 1995 - 1999 All rights reserved.
Module Name:
prop.hxx
Abstract:
Printer properties header.
Author:
Albert Ting (AlbertT) 17-Aug-1995
Revision History:
--*/
#ifndef _PRTPROP_HXX
#define _PRTPROP_HXX
/********************************************************************
Forward references.
********************************************************************/ class TPrinterPropertySheetManager; class TPrtShare; class TFindLocDlg;
/********************************************************************
Printer property sheet data.
********************************************************************/
class TPrinterData : public MSingletonWin, public MRefCom {
SIGNATURE( 'prtp' ) SAFE_NEW
public:
enum EPrinterPropPages { kPropGeneral, kPropSharing, kPropPorts, kPropJobScheduling, kPropMax };
enum EPublishState { kNoAction, kPublish, kUnPublish, kPublished, kNotPublished, kNoDsAvailable, kUnInitalized, };
enum EDsAvailableState { kDsAvailable, kDsNotAvailable, kDsUnInitalized, };
VAR( UINT, uStartPage );
VAR( BOOL, bValid ); VAR( BOOL, bNoAccess ); VAR( BOOL, bErrorSaving ); VAR( BOOL, bIsFaxDriver ); VAR( BOOL, bHideSharingUI ); VAR( BOOL, bGlobalDevMode ); VAR( BOOL, bDriverPagesNotLoaded ); VAR( BOOL, bApplyEnableState ); VAR( BOOL, bPooledPrinting ); VAR( BOOL, bDefaultPrinter ); VAR( BOOL, bServerFullAccess );
VAR( TString, strServerName ); VAR( LPCTSTR, pszServerName ); VAR( TString, strShareName ); VAR( TString, strDriverName ); VAR( TString, strComment ); VAR( TString, strLocation ); VAR( TString, strSheetName ); VAR( TString, strCurrentPrinterName );
VAR( TString, strPortName ); VAR( TString, strSepFile ); VAR( TString, strPrintProcessor ); VAR( TString, strDatatype ); VAR( TString, strStartPage ); VAR( TString, strDriverEnv ); VAR( TString, strDsPath ); VAR( TString, strObjectGUID );
VAR( HANDLE, hPrinter ); VAR( CAutoHandleIcon, shLargeIcon ); VAR( CAutoHandleIcon, shSmallIcon );
VAR( DWORD, dwAttributes ); VAR( DWORD, dwPriority ); VAR( DWORD, dwStartTime ); VAR( DWORD, dwUntilTime ); VAR( DWORD, dwStatus ); VAR( DWORD, dwAccess ); VAR( DWORD, dwDriverVersion ); VAR( DWORD, dwAction );
VAR( UINT, uMaxActiveCount ); VAR( UINT, uActiveCount );
VAR( PDEVMODE, pDevMode );
VAR( TPrinterPropertySheetManager *, pPrinterPropertySheetManager );
LONG_PTR _hPages[kPropMax]; HWND _hwndPages[kPropMax]; HWND _hwndLastPageSelected;
TPrinterData( IN LPCTSTR pszPrinterName, IN INT nCmdShow, IN LPCTSTR pszSheetName, IN DWORD dwSheetIndex, IN HWND hwnd, IN BOOL bModal, IN LPCTSTR pszDsPath = NULL );
~TPrinterData( VOID );
BOOL bLoad( VOID );
VOID vUnload( VOID );
BOOL bSave( IN BOOL bUpdateDevMode = FALSE );
BOOL bAdministrator( VOID );
BOOL bSupportBidi( VOID );
EPublishState ePrinterPublishState( TPrinterData::EPublishState eNewPublishState = EPublishState::kUnInitalized );
BOOL bIsDsAvailable( VOID );
BOOL bCheckForChange( IN UINT uLevel = -1 );
INT ComparePrinterName( IN LPCTSTR pszPrinterName1, IN LPCTSTR pszPrinterName2 );
private:
VOID vRefZeroed( VOID );
BOOL bDriverChangedGenPrinterName( TString *pstrNewName ) const;
BOOL bUpdateGlobalDevMode( VOID );
BOOL bUpdatePerUserDevMode( VOID );
VOID vGetSpecialInformation( VOID );
LPCTSTR pGetAdjustedPrinterName( IN LPCTSTR pszPrinterName, OUT TString &strTempPrinterName ) const;
//
// Prevent copying and assignment.
//
TPrinterData( const TPrinterData & );
TPrinterData & operator =( const TPrinterData & );
//
// Printer Info data class.
//
class TPrinterInfo {
SIGNATURE( 'prif' )
public:
TPrinterInfo( VOID );
~TPrinterInfo( VOID );
BOOL bUpdate( IN PPRINTER_INFO_2 pInfo );
BOOL bUpdate( IN PPRINTER_INFO_7 pInfo );
TString _strServerName; TString _strPrinterName; TString _strShareName; TString _strDriverName; TString _strComment; TString _strLocation; TString _strPortName; TString _strSepFile; TString _strPrintProcessor; TString _strDatatype; DWORD _dwAttributes; DWORD _dwPriority; DWORD _dwStartTime; DWORD _dwUntilTime; BOOL _bPooledPrinting;
TString _strObjectGUID; DWORD _dwAction;
private:
//
// Prevent copying and assignment.
//
TPrinterInfo( const TPrinterInfo & );
TPrinterInfo & operator =( const TPrinterInfo & );
};
EPublishState _ePrinterPublishState; EDsAvailableState _eDsAvailableState; TPrinterInfo _PrinterInfo; };
/********************************************************************
PrinterProp.
Base class for printer property sheets. This class should not not contain any information/services that is not generic to all derived classes.
The printer property sheets should inherit from this class. bHandleMessage (which is not overriden here) should be defined in derived classes.
********************************************************************/
class TPrinterProp : public MGenericProp {
SIGNATURE( 'prpr' ) ALWAYS_VALID SAFE_NEW
public:
//
// Serves as the thread start routine.
//
static INT iPrinterPropPagesProc( TPrinterData* pPrinterData );
protected:
VAR( TPrinterData*, pPrinterData );
TPrinterProp( TPrinterData* pPrinterData );
TPrinterProp( const TPrinterProp & );
TPrinterProp & operator = ( const TPrinterProp & );
VOID vSetIcon( VOID );
VOID vSetIconName( VOID );
VOID vReloadPages( VOID );
VOID vCancelToClose( VOID );
VOID vSetApplyState( IN BOOL bNewApplyState );
virtual BOOL _bHandleMessage( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam ) = 0;
private:
BOOL bHandleMessage( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam );
BOOL bHandle_InitDialog( IN WPARAM wParam, IN LPARAM lParam );
BOOL bHandle_Notify( IN WPARAM wParam, IN LPARAM lParam );
BOOL bHandle_SettingChange( IN WPARAM wParam, IN LPARAM lParam );
VOID vPropSheetChangedAllPages( VOID );
VOID vPropSheetUnChangedAllPages( VOID );
VOID vNotifyActivePagesToRefresh( VOID );
VOID vApplyChanges( VOID );
};
/********************************************************************
General printer property page.
********************************************************************/
class TPrinterGeneral : public TPrinterProp {
SIGNATURE( 'gepr' ) SAFE_NEW
public:
TPrinterGeneral( TPrinterData* pPrinterData );
~TPrinterGeneral( VOID );
BOOL bValid( VOID );
private:
/********************************************************************
Virtual override.
********************************************************************/
BOOL _bHandleMessage( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam );
BOOL bSetUI( VOID );
VOID vReadUI( VOID );
VOID vHandleBrowseLocation( VOID );
VOID vHandleDocumentDefaults( IN WPARAM wParam, IN LPARAM lParam );
VOID vReloadFeaturesInformation( VOID );
VOID vSetActive( VOID );
VOID vKillActive( VOID );
VOID vCheckForSharedMasqPrinter( VOID );
BOOL _bSetUIDone; TFindLocDlg *_pLocationDlg; CMultilineEditBug m_wndComment; };
/********************************************************************
Ports Property Page.
********************************************************************/
class TPrinterPorts : public TPrinterProp {
SIGNATURE( 'popr' ) SAFE_NEW
public:
TPrinterPorts( TPrinterData *pPrinterData );
~TPrinterPorts( VOID );
BOOL bValid( VOID );
private:
TPortsLV _PortsLV; BOOL _bAdminFlag;
/********************************************************************
Virtual override.
********************************************************************/
BOOL _bHandleMessage( UINT uMsg, WPARAM wParam, LPARAM lParam );
BOOL bSetUI( VOID );
VOID vReadUI( VOID );
VOID vSetActive( VOID );
BOOL bKillActive( VOID );
};
/********************************************************************
Job Scheduling Property Page.
********************************************************************/
class TPrinterJobScheduling : public TPrinterProp {
SIGNATURE( 'jspr' ) SAFE_NEW
public:
TPrinterJobScheduling( TPrinterData *pPrinterData );
~TPrinterJobScheduling( VOID );
BOOL bValid( VOID );
private:
enum _CONSTANTS { kPriorityMin = 1, kPriorityMax = 99, };
BOOL _bSetUIDone;
/********************************************************************
Virtual override.
********************************************************************/
BOOL _bHandleMessage( IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam );
BOOL bSetUI( VOID );
VOID vReadUI( VOID );
VOID vEnableAvailable( BOOL bEnable );
VOID vUpdatePriorityNumber( DWORD dwPriority );
BOOL bSetStartAndUntilTime( VOID ); VOID vSetActive( VOID );
VOID vSeparatorPage( VOID );
VOID vPrintProcessor( VOID );
VOID vHandleGlobalDocumentDefaults( IN WPARAM wParam, IN LPARAM lParam );
BOOL bFillAndSelectDrivers( VOID );
VOID vHandleNewDriver( IN WPARAM wParam, IN LPARAM lParam );
};
/********************************************************************
Sharing Property Page.
********************************************************************/
class TPrinterSharing : public TPrinterProp {
SIGNATURE( 'sepr' ) SAFE_NEW
public:
TPrinterSharing( TPrinterData *pPrinterData );
~TPrinterSharing( VOID );
BOOL bValid( VOID );
private:
TPrtShare *_pPrtShare; BOOL _bHideListed; BOOL _bSetUIDone; BOOL _bAcceptInvalidDosShareName; BOOL _bDefaultPublishState; BOOL _bSharingEnabled; TString _strPendingText; TString _strShareName;
//
// Copying and assignment are not defined.
//
TPrinterSharing( const TPrinterSharing &rhs );
TPrinterSharing & operator =( const TPrinterSharing &rhs );
VOID vSetActive( VOID );
VOID vSharePrinter( VOID );
VOID vSetDefaultShareName( VOID );
VOID vUnsharePrinter( VOID );
BOOL bKillActive( VOID );
VOID vAdditionalDrivers( IN WPARAM wParam, IN LPARAM lParam );
/********************************************************************
Virtual override.
********************************************************************/
BOOL _bHandleMessage( UINT uMsg, WPARAM wParam, LPARAM lParam );
BOOL bSetUI( VOID );
VOID vReadUI( VOID );
};
/********************************************************************
Global scoped functions.
********************************************************************/
VOID vPrinterPropPages( IN HWND hwnd, IN LPCTSTR pszPrinterName, IN INT nCmdShow, IN LPARAM lParam );
DWORD dwPrinterPropPages( IN HWND hwnd, IN IDataObject *pDataObject, IN PBOOL pbDisplayed );
DWORD dwPrinterPropPages( IN HWND hwnd, IN LPCTSTR pszDsPath, IN PBOOL pbDisplayed );
DWORD dwPrinterPropPagesInternal( IN HWND hwnd, IN LPCTSTR pszPrinterName, IN LPCTSTR pszSheetName, IN DWORD dwSheetIndex, IN INT nCmdShow, IN BOOL bModal, IN LPCTSTR pszDsPath );
#endif // def _PRTPROP_HXX
|