/*++ Copyright (c) 1996 Microsoft Corporation Module Name: srvopts.c Abstract: Functions for handling events in the "Server Options" tab of the fax server configuration property sheet Environment: Fax configuration applet Revision History: 03/13/96 -davidx- Created it. mm/dd/yy -author- description --*/ #include "faxcpl.h" VOID DoInitServerOptions( HWND hDlg ) /*++ Routine Description: Perform one-time initialization of "Server Options" property page Arguments: hDlg - Window handle to the "Server Options" property page Return Value: NONE --*/ { PFAX_CONFIGURATION pFaxConfig; // // Connect to the fax service and retrieve the list of fax devices // GetFaxDeviceAndConfigInfo(); // // Initialize retries characteristics and toll prefix list boxes // if (pFaxConfig = gConfigData->pFaxConfig) { insideSetDlgItemText = TRUE; SetDlgItemInt(hDlg, IDC_NUMRETRIES, pFaxConfig->Retries, FALSE); SetDlgItemInt(hDlg, IDC_RETRY_INTERVAL, pFaxConfig->RetryDelay, FALSE); SetDlgItemInt(hDlg, IDC_MAXJOBLIFE, pFaxConfig->DirtyDays, FALSE); insideSetDlgItemText = FALSE; CheckDlgButton(hDlg, IDC_PRINT_BANNER, pFaxConfig->Branding); CheckDlgButton(hDlg, IDC_USE_DEVICE_TSID, pFaxConfig->UseDeviceTsid); } } BOOL DoSaveServerOptions( HWND hDlg ) /*++ Routine Description: Save the information on the "Server Options" property page Arguments: hDlg - Handle to the "Server Options" property page Return Value: TRUE if successful, FALSE if there is an error --*/ { PFAX_CONFIGURATION pFaxConfig; BOOL success; DWORD value; // // Check if anything on this page was changed // Verbose(("Saving 'Server Options' page ...\n")); if (! GetChangedFlag(SERVER_OPTIONS_PAGE)) return TRUE; if (pFaxConfig = gConfigData->pFaxConfig) { // // Retrieve the information in the text fields // value = GetDlgItemInt(hDlg, IDC_NUMRETRIES, &success, FALSE); if (success) pFaxConfig->Retries = value; value = GetDlgItemInt(hDlg, IDC_RETRY_INTERVAL, &success, FALSE); if (success) pFaxConfig->RetryDelay = value; value = GetDlgItemInt(hDlg, IDC_MAXJOBLIFE, &success, FALSE); if (success) pFaxConfig->DirtyDays = value; pFaxConfig->Branding = IsDlgButtonChecked(hDlg, IDC_PRINT_BANNER); pFaxConfig->UseDeviceTsid = IsDlgButtonChecked(hDlg, IDC_USE_DEVICE_TSID); } // // Save the fax device information if this is the last modified page // return SaveFaxDeviceAndConfigInfo(hDlg, SERVER_OPTIONS_PAGE); } BOOL ServerOptionsProc( HWND hDlg, UINT message, UINT wParam, LONG lParam ) /*++ Routine Description: Procedure for handling the "Server Options" tab Arguments: hDlg - Identifies the property sheet page message - Specifies the message wParam - Specifies additional message-specific information lParam - Specifies additional message-specific information Return Value: Depends on the value of message parameter --*/ #define MAX_RETRIES 15 #define MAX_RETRY_INTERVAL 1440 #define MAX_JOBLIFE 365 { INT cmdId; switch (message) { case WM_INITDIALOG: DoInitServerOptions(hDlg); return TRUE; case WM_COMMAND: switch (cmdId = GET_WM_COMMAND_ID(wParam, lParam)) { case IDC_PRINT_BANNER: case IDC_USE_DEVICE_TSID: break; case IDC_NUMRETRIES: case IDC_RETRY_INTERVAL: case IDC_MAXJOBLIFE: if (GET_WM_COMMAND_CMD(wParam, lParam) == EN_CHANGE && !insideSetDlgItemText) { INT maxVal, curVal; BOOL valid; HWND hwndText; maxVal = (cmdId == IDC_NUMRETRIES) ? MAX_RETRIES : (cmdId == IDC_RETRY_INTERVAL) ? MAX_RETRY_INTERVAL : MAX_JOBLIFE; hwndText = GetDlgItem(hDlg, cmdId); curVal = GetDlgItemInt(hDlg, cmdId, &valid, FALSE); if (curVal > maxVal) { valid = FALSE; curVal = maxVal; } if (! valid) { MessageBeep(MB_OK); insideSetDlgItemText = TRUE; SetDlgItemInt(hDlg, cmdId, curVal, FALSE); SendMessage(hwndText, EM_SETSEL, 0, -1); insideSetDlgItemText = FALSE; } break; } return TRUE; default: return FALSE; } SetChangedFlag(hDlg, SERVER_OPTIONS_PAGE, TRUE); return TRUE; case WM_NOTIFY: if (((NMHDR *) lParam)->code == PSN_APPLY) { // // User pressed OK or Apply - validate inputs and save changes // if (! DoSaveServerOptions(hDlg)) { SetWindowLong(hDlg, DWL_MSGRESULT, -1); return PSNRET_INVALID_NOCHANGEPAGE; } else { SetChangedFlag(hDlg, SERVER_OPTIONS_PAGE, FALSE); return PSNRET_NOERROR; } } break; case WM_HELP: case WM_CONTEXTMENU: return HandleHelpPopup(hDlg, message, wParam, lParam, SERVER_OPTIONS_PAGE); } return FALSE; }