mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
256 lines
7.0 KiB
256 lines
7.0 KiB
/******************************* MODULE HEADER ******************************
|
|
* ppsui.c
|
|
* Printer property sheet UI handling.
|
|
*
|
|
* Revision History:
|
|
*
|
|
****************************************************************************/
|
|
|
|
#include "hp5sipch.h"
|
|
#include "./MBDial/resource.h"
|
|
|
|
/***************************** Function Header *******************************
|
|
* lRestoreDefaultsCallback -- Callback handler that restores all tree values
|
|
* to their default values.
|
|
* RETURNS: CPSUICB_ACTION_OPTIF_CHANGED if changes, CPSUICB_ACTION_NONE
|
|
* otherwise.
|
|
*****************************************************************************/
|
|
|
|
LONG
|
|
lRestoreDefaultsCallback(PCPSUICBPARAM pComPropSheetUICBParam)
|
|
{
|
|
LONG result = CPSUICB_ACTION_NONE;
|
|
POEM_PROPERTYHEADER pPH;
|
|
pPH = (POEM_PROPERTYHEADER) pComPropSheetUICBParam->pCurItem->UserData;
|
|
|
|
if(pPH){
|
|
PPRNPROPSHEET pDefaultPrnPropSheet = 0;
|
|
if(bGetPrnModel(g_hModule, pPH->pModelName, NULL, &pDefaultPrnPropSheet)) {
|
|
PPRNPROPSHEET pHPPrnPropSheet = 0;
|
|
pHPPrnPropSheet = (PPRNPROPSHEET) pPH->OEMDriverUserData;
|
|
memcpy(pHPPrnPropSheet, pDefaultPrnPropSheet, sizeof(PRNPROPSHEET));
|
|
}
|
|
|
|
bUpdateTree(pPH, GET_PROPS);
|
|
result = CPSUICB_ACTION_OPTIF_CHANGED;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
/***************************** Function Header *******************************
|
|
* bSetPropSheet(JR)
|
|
* Sets a given property sheet item according to the current OPTITEM
|
|
* selection.
|
|
*
|
|
* RETURNS: (BOOL) TRUE on success, FALSE otherwise.
|
|
*****************************************************************************/
|
|
BOOL
|
|
bSetPropSheet(PPRNPROPSHEET pPrnPropSheet,
|
|
DWORD resourceID,
|
|
POPTITEM pOptItem)
|
|
{
|
|
BOOL result = TRUE;
|
|
DWORD selId = 0;
|
|
BOOL bCompareResult;
|
|
|
|
TRY
|
|
|
|
selId = (DWORD) pOptItem->pOptType->pOptParam[pOptItem->Sel].pData;
|
|
|
|
if(pPrnPropSheet == NULL)
|
|
return FALSE;
|
|
|
|
/* Determine if current selection is installed. */
|
|
bCompareResult = (selId == IDS_CUI_INSTALLED);
|
|
|
|
switch(resourceID) {
|
|
case IDS_CUI_ENVELOPEFEEDER:
|
|
pPrnPropSheet->bEnvelopeFeeder = bCompareResult;
|
|
break;
|
|
case IDS_CUI_HCI:
|
|
pPrnPropSheet->bHighCapacityInput = bCompareResult;
|
|
break;
|
|
case IDS_CUI_DUPLEX:
|
|
pPrnPropSheet->bDuplex = bCompareResult;
|
|
break;
|
|
case IDS_CUI_MAILBOX:
|
|
pPrnPropSheet->bMailbox = bCompareResult;
|
|
break;
|
|
case IDS_CUI_MAILBOXMODE:
|
|
pPrnPropSheet->dMailboxMode = dwIDStoGPC(selId);
|
|
break;
|
|
case IDS_CUI_DISK:
|
|
pPrnPropSheet->bDisk = bCompareResult;
|
|
break;
|
|
default:
|
|
result = FALSE;
|
|
break;
|
|
}
|
|
|
|
ENDTRY
|
|
|
|
FINALLY
|
|
ENDFINALLY
|
|
|
|
return result;
|
|
}
|
|
|
|
/***************************** Function Header *******************************
|
|
* bGetPropSheet(JR)
|
|
* Gets an item from the property sheet and sets the OPTITEM accordingly.
|
|
*
|
|
* RETURNS: (BOOL) TRUE on success, FALSE otherwise.
|
|
*****************************************************************************/
|
|
BOOL
|
|
bGetPropSheet(PPRNPROPSHEET pPrnPropSheet,
|
|
DWORD resourceID,
|
|
POPTITEM pOptItem)
|
|
{
|
|
BOOL result = TRUE;
|
|
DWORD dwLookupID = 0;
|
|
|
|
|
|
if(pPrnPropSheet == NULL)
|
|
return result;
|
|
|
|
switch(resourceID) {
|
|
case IDS_CUI_ENVELOPEFEEDER:
|
|
dwLookupID = (pPrnPropSheet->bEnvelopeFeeder ? IDS_CUI_INSTALLED : IDS_CUI_NOTINSTALLED);
|
|
break;
|
|
case IDS_CUI_HCI:
|
|
dwLookupID = (pPrnPropSheet->bHighCapacityInput ? IDS_CUI_INSTALLED : IDS_CUI_NOTINSTALLED);
|
|
break;
|
|
case IDS_CUI_DUPLEX:
|
|
dwLookupID = (pPrnPropSheet->bDuplex ? IDS_CUI_INSTALLED : IDS_CUI_NOTINSTALLED);
|
|
break;
|
|
case IDS_CUI_MAILBOX:
|
|
dwLookupID = (pPrnPropSheet->bMailbox ? IDS_CUI_INSTALLED : IDS_CUI_NOTINSTALLED);
|
|
break;
|
|
case IDS_CUI_MAILBOXMODE:
|
|
dwLookupID = dwGPCtoIDS(pPrnPropSheet->dMailboxMode);
|
|
break;
|
|
case IDS_CUI_DISK:
|
|
dwLookupID = (pPrnPropSheet->bDisk ? IDS_CUI_INSTALLED : IDS_CUI_NOTINSTALLED);
|
|
break;
|
|
default:
|
|
dwLookupID = IDS_CUI_NOTINSTALLED;
|
|
break;
|
|
}
|
|
|
|
pOptItem->Sel = lLookupSel(pOptItem, dwLookupID);
|
|
|
|
return result;
|
|
}
|
|
|
|
/***************************** Function Header *******************************
|
|
* bUpdatePrnPropSettings - Handles a directive to either Get a Printer Property
|
|
* from an Optional Item or set an Optional Items state
|
|
* according to Printer Property sheet value.
|
|
*
|
|
* RETURNS: result success of setting/getting attempt.
|
|
*****************************************************************************/
|
|
|
|
BOOL bUpdatePrnPropSettings(
|
|
POPTITEM pOptItem,
|
|
DWORD resourceID,
|
|
PROP_CHG_DIRECTIVE gsDirective,
|
|
PPRNPROPSHEET pPrnPropSheet
|
|
)
|
|
{
|
|
PDWORD pLookupResult;
|
|
DWORD LookupResultSize;
|
|
BOOL result = FALSE;
|
|
|
|
TRY
|
|
ASSERT(pPrnPropSheet);
|
|
|
|
if(gsDirective == SET_PROPS)
|
|
result = bSetPropSheet(pPrnPropSheet, resourceID, pOptItem);
|
|
else if(gsDirective == GET_PROPS)
|
|
result = bGetPropSheet(pPrnPropSheet, resourceID, pOptItem);
|
|
|
|
ENDTRY
|
|
|
|
FINALLY
|
|
ENDFINALLY
|
|
return result;
|
|
}
|
|
|
|
/***************************** Function Header *******************************
|
|
* lPrinterPropertiesCallback -- Callback handler that handles RasddUI
|
|
* callback reasons for the printer properties
|
|
* window.
|
|
*
|
|
* RETURNS: CPSUICB_ACTION_OPTIF_CHANGED if changes, CPSUICB_ACTION_NONE
|
|
* otherwise.
|
|
*****************************************************************************/
|
|
|
|
LONG lPrinterPropertiesCallback(PCPSUICBPARAM pComPropSheetUICBParam)
|
|
{
|
|
LONG result = CPSUICB_ACTION_NONE;
|
|
POEM_PROPERTYHEADER pPH = 0;
|
|
|
|
TRY
|
|
|
|
pPH = (POEM_PROPERTYHEADER) pComPropSheetUICBParam->UserData;
|
|
|
|
if(pComPropSheetUICBParam) {
|
|
switch(pComPropSheetUICBParam->Reason)
|
|
{
|
|
case CPSUICB_REASON_PUSHBUTTON:
|
|
case CPSUICB_REASON_ECB_CHANGED:
|
|
case CPSUICB_REASON_DLGPROC:
|
|
case CPSUICB_REASON_OPTITEM_SETFOCUS:
|
|
case CPSUICB_REASON_ITEMS_REVERTED:
|
|
case CPSUICB_REASON_SEL_CHANGED:
|
|
case CPSUICB_REASON_UNDO_CHANGES:
|
|
/* Update Current Print Properties in ListBox. */
|
|
if(bUpdateTree(pPH, MODIFY_CUR_PP))
|
|
result = CPSUICB_ACTION_OPTIF_CHANGED;
|
|
break;
|
|
case CPSUICB_REASON_APPLYNOW:
|
|
if(bUpdateTree(pPH, SET_PROPS))
|
|
result = CPSUICB_ACTION_OPTIF_CHANGED;
|
|
break;
|
|
case CPSUICB_REASON_ABOUT:
|
|
case CPSUICB_REASON_EXTPUSH:
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
ENDTRY
|
|
|
|
FINALLY
|
|
ENDFINALLY
|
|
|
|
return(result);
|
|
}
|
|
|
|
/***************************** Function Header *******************************
|
|
* OEMUpdateRegistry
|
|
*
|
|
* Notification from rasdd to set default registry settings.
|
|
*
|
|
* RETURNS: (BOOL) TRUE for success.
|
|
*****************************************************************************/
|
|
|
|
BOOL
|
|
OEMUpdateRegistry(POEMUPDATEREGPARAM pParam)
|
|
{
|
|
BOOL result = FALSE;
|
|
PPRNPROPSHEET pPrnPropSheet = 0;
|
|
TRY
|
|
if(pParam->cbSize == sizeof(OEMUPDATEREGPARAM))
|
|
if(bGetPrnModel(g_hModule, pParam->pwstrModel, NULL, &pPrnPropSheet) == TRUE)
|
|
if(bSetPrnPropData(pParam->hPrinter, pPrnPropSheet) == TRUE)
|
|
result = TRUE;
|
|
|
|
ENDTRY
|
|
|
|
FINALLY
|
|
ENDFINALLY
|
|
return result;
|
|
}
|
|
|