|
|
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
priority.c
Abstract:
Functions for handling events in the "Device Priority" tab of the fax server configuration property sheet
Environment:
Fax configuration applet
Revision History:
05/06/96 -davidx- Created it.
mm/dd/yy -author- description
--*/
#include "faxcpl.h"
VOID DoActivateDevicePriority( HWND hDlg )
/*++
Routine Description:
Called when the "Device Priority" property page is activated
Arguments:
hDlg - Window handle to the "Device Priority" property page
Return Value:
NONE
--*/
{ //
// Information about the fax device list view
//
static COLUMNINFO faxDeviceListViewColumnInfo[] = {
{ COLUMN_DEVICE_NAME, 1 }, { 0, 0 }, };
HWND hwndLV;
//
// Reinitialize the fax device list view if necessary
//
if (!IsFaxDeviceListInSync(DEVICE_PRIORITY_PAGE) && (hwndLV = GetDlgItem(hDlg, IDC_FAX_DEVICE_LIST))) { InitFaxDeviceListView(hwndLV, 0, faxDeviceListViewColumnInfo); }
SetFaxDeviceListInSync(DEVICE_PRIORITY_PAGE); }
BOOL DoSaveDevicePriority( HWND hDlg )
/*++
Routine Description:
Save the information on the "Device Priority" property page
Arguments:
hDlg - Handle to the "Device Priority" property page
Return Value:
TRUE if successful, FALSE if there is an error
--*/
{ INT index;
//
// Check if anything on this page was changed
//
Verbose(("Saving 'Receive Options' page ...\n"));
if (! GetChangedFlag(DEVICE_PRIORITY_PAGE)) return TRUE;
//
// Assign priority to fax devices: smaller number corresponds to lower priority
//
for (index=0; index < gConfigData->cDevices; index++) gConfigData->pDevInfo[index].Priority = gConfigData->cDevices - index + 1;
//
// Save the fax device information if this is the last modified page
//
gConfigData->priorityChanged = TRUE; return SaveFaxDeviceAndConfigInfo(hDlg, DEVICE_PRIORITY_PAGE); }
VOID DoChangeDevicePriority( HWND hDlg, INT direction )
/*++
Routine Description:
Increment or decrement the priority of current selected fax device
Arguments:
hDlg - Handle to the "Device Priority" property page direction - Whether to increment or decrement the device priority -1 to increment device priority 1 to decrement device priority
Return Value:
NONE
--*/
{ HWND hwndLV; INT index, newIndex, nItems;
//
// Get the index of the currently selected item and
// count the total number of items in the list view
//
if ((hwndLV = GetDlgItem(hDlg, IDC_FAX_DEVICE_LIST)) == NULL || (nItems = ListView_GetItemCount(hwndLV)) == -1 || (index = ListView_GetNextItem(hwndLV, -1, LVNI_ALL|LVNI_SELECTED)) == -1) { return; }
//
// Calculate the new item index
//
Assert(nItems <= gConfigData->cDevices && index < nItems);
if ((newIndex = index + direction) >= 0 && newIndex < nItems) {
CONFIG_PORT_INFO_2 portInfo;
portInfo = gConfigData->pDevInfo[index]; gConfigData->pDevInfo[index] = gConfigData->pDevInfo[newIndex]; gConfigData->pDevInfo[newIndex] = portInfo;
gConfigData->faxDeviceSyncFlag = 0; DoActivateDevicePriority(hDlg);
//
// Keep the original fax device selected
//
ListView_SetItemState(hwndLV, newIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); } }
BOOL DevicePriorityProc( HWND hDlg, UINT message, UINT wParam, LONG lParam )
/*++
Routine Description:
Procedure for handling the "Device Priority" 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
--*/
{ INT cmdId;
switch (message) {
case WM_INITDIALOG:
GetFaxDeviceAndConfigInfo();
SendMessage(GetDlgItem(hDlg, IDC_MOVEUP), BM_SETIMAGE, IMAGE_ICON, (WPARAM) LoadIcon(ghInstance, MAKEINTRESOURCE(IDI_ARROWUP)));
SendMessage(GetDlgItem(hDlg, IDC_MOVEDOWN), BM_SETIMAGE, IMAGE_ICON, (LPARAM) LoadIcon(ghInstance, MAKEINTRESOURCE(IDI_ARROWDOWN))); return TRUE;
case WM_COMMAND:
switch (cmdId = GET_WM_COMMAND_ID(wParam, lParam)) {
case IDC_MOVEUP: case IDC_MOVEDOWN:
DoChangeDevicePriority(hDlg, (cmdId == IDC_MOVEUP) ? -1 : 1); break;
default: return FALSE; }
SetChangedFlag(hDlg, DEVICE_PRIORITY_PAGE, TRUE); return TRUE;
case WM_NOTIFY:
switch (((NMHDR *) lParam)->code) {
case PSN_SETACTIVE:
DoActivateDevicePriority(hDlg); break;
case PSN_APPLY:
//
// User pressed OK or Apply - validate inputs and save changes
//
if (! DoSaveDevicePriority(hDlg)) {
SetWindowLong(hDlg, DWL_MSGRESULT, -1); return PSNRET_INVALID_NOCHANGEPAGE;
} else {
SetChangedFlag(hDlg, DEVICE_PRIORITY_PAGE, FALSE); return PSNRET_NOERROR; } } break;
case WM_HELP: case WM_CONTEXTMENU:
return HandleHelpPopup(hDlg, message, wParam, lParam, DEVICE_PRIORITY_PAGE); }
return FALSE; }
|