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.
418 lines
14 KiB
418 lines
14 KiB
/*++
|
|
|
|
Copyright (c) 1996 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
archfldr.c
|
|
|
|
Abstract:
|
|
|
|
Property sheet handler for "Archive folder" page and "Remote" page
|
|
|
|
Environment:
|
|
|
|
Fax driver user interface
|
|
|
|
Revision History:
|
|
|
|
04/09/00 -taoyuan-
|
|
Created it.
|
|
|
|
mm/dd/yy -author-
|
|
description
|
|
|
|
--*/
|
|
|
|
#include <stdio.h>
|
|
#include "faxui.h"
|
|
#include "resource.h"
|
|
|
|
INT_PTR
|
|
CALLBACK
|
|
ArchiveInfoDlgProc(
|
|
HWND hDlg,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
)
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Procedure for handling the archive folder tab
|
|
|
|
Arguments:
|
|
|
|
hDlg - Identifies the property sheet page
|
|
uMsg - Specifies the message
|
|
wParam - Specifies additional message-specific information
|
|
lParam - Specifies additional message-specific information
|
|
|
|
Return Value:
|
|
|
|
Depends on the value of message parameter
|
|
|
|
--*/
|
|
|
|
{
|
|
DWORD dwRes = 0;
|
|
|
|
switch (uMsg)
|
|
{
|
|
case WM_INITDIALOG :
|
|
{
|
|
PFAX_ARCHIVE_CONFIG pFaxArchiveConfig;
|
|
|
|
SetLTREditDirection(hDlg, IDC_OUTGOING_FOLDER);
|
|
SetLTREditDirection(hDlg, IDC_INCOMING_FOLDER);
|
|
|
|
// set edit box text limit
|
|
SendDlgItemMessage(hDlg, IDC_INCOMING_FOLDER, EM_SETLIMITTEXT, MAX_ARCHIVE_FOLDER_PATH, 0);
|
|
SendDlgItemMessage(hDlg, IDC_OUTGOING_FOLDER, EM_SETLIMITTEXT, MAX_ARCHIVE_FOLDER_PATH, 0);
|
|
|
|
if(!Connect(hDlg, TRUE))
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
// load incoming archive folder info
|
|
if(FaxGetArchiveConfiguration(g_hFaxSvcHandle, FAX_MESSAGE_FOLDER_INBOX, &pFaxArchiveConfig))
|
|
{
|
|
CheckDlgButton(hDlg, IDC_INCOMING, pFaxArchiveConfig->bUseArchive ? BST_CHECKED : BST_UNCHECKED);
|
|
SetDlgItemText(hDlg, IDC_INCOMING_FOLDER, pFaxArchiveConfig->lpcstrFolder);
|
|
if(g_bUserCanChangeSettings)
|
|
{
|
|
EnableWindow(GetDlgItem(hDlg, IDC_INCOMING), TRUE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_INCOMING_FOLDER), IsDlgButtonChecked(hDlg, IDC_INCOMING));
|
|
EnableWindow(GetDlgItem(hDlg, IDC_INCOMING_FOLDER_BR), IsDlgButtonChecked(hDlg, IDC_INCOMING));
|
|
}
|
|
FaxFreeBuffer(pFaxArchiveConfig);
|
|
}
|
|
else
|
|
{
|
|
dwRes = GetLastError();
|
|
Error(("FaxGetArchiveConfiguration(FAX_MESSAGE_FOLDER_INBOX) failed. Error code is %d.\n", dwRes));
|
|
goto Exit;
|
|
}
|
|
|
|
// load incoming archive folder info
|
|
if(FaxGetArchiveConfiguration(g_hFaxSvcHandle, FAX_MESSAGE_FOLDER_SENTITEMS, &pFaxArchiveConfig))
|
|
{
|
|
CheckDlgButton(hDlg, IDC_OUTGOING, pFaxArchiveConfig->bUseArchive ? BST_CHECKED : BST_UNCHECKED);
|
|
SetDlgItemText(hDlg, IDC_OUTGOING_FOLDER, pFaxArchiveConfig->lpcstrFolder);
|
|
if(g_bUserCanChangeSettings)
|
|
{
|
|
EnableWindow(GetDlgItem(hDlg, IDC_OUTGOING), TRUE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_OUTGOING_FOLDER), IsDlgButtonChecked(hDlg, IDC_OUTGOING));
|
|
EnableWindow(GetDlgItem(hDlg, IDC_OUTGOING_FOLDER_BR), IsDlgButtonChecked(hDlg, IDC_OUTGOING));
|
|
}
|
|
FaxFreeBuffer(pFaxArchiveConfig);
|
|
}
|
|
else
|
|
{
|
|
dwRes = GetLastError();
|
|
Error(( "FaxGetArchiveConfiguration(FAX_MESSAGE_FOLDER_SENTITEMS) failed. Error code is %d.\n", dwRes));
|
|
goto Exit;
|
|
}
|
|
if (g_pSHAutoComplete)
|
|
{
|
|
g_pSHAutoComplete (GetDlgItem(hDlg, IDC_OUTGOING_FOLDER), SHACF_FILESYSTEM);
|
|
g_pSHAutoComplete (GetDlgItem(hDlg, IDC_INCOMING_FOLDER), SHACF_FILESYSTEM);
|
|
}
|
|
|
|
Exit:
|
|
DisConnect();
|
|
|
|
if (dwRes != 0)
|
|
{
|
|
DisplayErrorMessage(hDlg, 0, dwRes);
|
|
return TRUE;
|
|
}
|
|
|
|
if(!g_bUserCanChangeSettings)
|
|
{
|
|
PageEnable(hDlg, FALSE);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
case WM_COMMAND:
|
|
|
|
switch(LOWORD(wParam))
|
|
{
|
|
case IDC_INCOMING_FOLDER:
|
|
case IDC_OUTGOING_FOLDER:
|
|
|
|
if(HIWORD(wParam) == EN_CHANGE) // notification code
|
|
{
|
|
Notify_Change(hDlg);
|
|
}
|
|
|
|
if (HIWORD(wParam) == EN_KILLFOCUS)
|
|
{
|
|
TCHAR szFolder[MAX_PATH * 2];
|
|
TCHAR szResult[MAX_PATH * 2];
|
|
//
|
|
// Edit control lost its focus
|
|
//
|
|
GetDlgItemText (hDlg, LOWORD(wParam), szFolder, ARR_SIZE(szFolder));
|
|
if (lstrlen (szFolder))
|
|
{
|
|
if (GetFullPathName(szFolder, ARR_SIZE(szResult), szResult, NULL))
|
|
{
|
|
if (g_pPathMakePrettyW)
|
|
{
|
|
g_pPathMakePrettyW (szResult);
|
|
}
|
|
SetDlgItemText (hDlg, LOWORD(wParam), szResult);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case IDC_INCOMING:
|
|
case IDC_OUTGOING:
|
|
|
|
if( HIWORD(wParam) == BN_CLICKED ) // notification code
|
|
{
|
|
BOOL bEnabled;
|
|
|
|
if(LOWORD(wParam) == IDC_INCOMING)
|
|
{
|
|
bEnabled = IsDlgButtonChecked(hDlg, IDC_INCOMING);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_INCOMING_FOLDER), bEnabled);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_INCOMING_FOLDER_BR), bEnabled);
|
|
}
|
|
else
|
|
{
|
|
bEnabled = IsDlgButtonChecked(hDlg, IDC_OUTGOING);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_OUTGOING_FOLDER), bEnabled);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_OUTGOING_FOLDER_BR), bEnabled);
|
|
}
|
|
|
|
Notify_Change(hDlg);
|
|
}
|
|
|
|
break;
|
|
|
|
case IDC_INCOMING_FOLDER_BR:
|
|
case IDC_OUTGOING_FOLDER_BR:
|
|
{
|
|
TCHAR szTitle[MAX_TITLE_LEN];
|
|
BOOL bResult;
|
|
|
|
if(!LoadString(g_hResource, IDS_BROWSE_FOLDER, szTitle, MAX_TITLE_LEN))
|
|
{
|
|
Error(( "LoadString failed, string ID is %d.\n", IDS_BROWSE_FOLDER ));
|
|
}
|
|
|
|
if( LOWORD(wParam) == IDC_INCOMING_FOLDER_BR )
|
|
{
|
|
bResult = BrowseForDirectory(hDlg, IDC_INCOMING_FOLDER, MAX_ARCHIVE_FOLDER_PATH, szTitle);
|
|
}
|
|
else
|
|
{
|
|
bResult = BrowseForDirectory(hDlg, IDC_OUTGOING_FOLDER, MAX_ARCHIVE_FOLDER_PATH, szTitle);
|
|
}
|
|
|
|
if(bResult)
|
|
{
|
|
Notify_Change(hDlg);
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
break;
|
|
|
|
case WM_NOTIFY:
|
|
{
|
|
|
|
LPNMHDR lpnm = (LPNMHDR) lParam;
|
|
|
|
switch (lpnm->code)
|
|
{
|
|
case PSN_APPLY:
|
|
{
|
|
PFAX_ARCHIVE_CONFIG pFaxArchiveConfig = NULL;
|
|
BOOL bEnabled;
|
|
TCHAR szArchiveFolder[MAX_PATH] = {0};
|
|
HWND hControl;
|
|
|
|
// if the user only has read permission, return immediately
|
|
if(!g_bUserCanChangeSettings)
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
// check the validaty of edit box if they are enabled.
|
|
if(IsDlgButtonChecked(hDlg, IDC_INCOMING))
|
|
{
|
|
hControl = GetDlgItem(hDlg, IDC_INCOMING_FOLDER);
|
|
GetWindowText(hControl, szArchiveFolder, MAX_PATH);
|
|
|
|
if ((g_pPathIsRelativeW && g_pPathIsRelativeW(szArchiveFolder)) ||
|
|
!DirectoryExists(szArchiveFolder))
|
|
{
|
|
DisplayErrorMessage(hDlg, 0, ERROR_PATH_NOT_FOUND);
|
|
SendMessage(hControl, EM_SETSEL, 0, -1);
|
|
SetFocus(hControl);
|
|
SetActiveWindow(hControl);
|
|
SetWindowLongPtr(hDlg, DWLP_MSGRESULT, PSNRET_INVALID);
|
|
return TRUE;
|
|
}
|
|
szArchiveFolder[0] = 0; // set string to empty string
|
|
}
|
|
|
|
if(IsDlgButtonChecked(hDlg, IDC_OUTGOING))
|
|
{
|
|
hControl = GetDlgItem(hDlg, IDC_OUTGOING_FOLDER);
|
|
GetWindowText(hControl, szArchiveFolder, MAX_PATH);
|
|
|
|
// if(lstrlen(szArchiveFolder) == 0)
|
|
if( !DirectoryExists(szArchiveFolder) )
|
|
{
|
|
DisplayErrorMessage(hDlg, 0, ERROR_PATH_NOT_FOUND);
|
|
SendMessage(hControl, EM_SETSEL, 0, -1);
|
|
SetFocus(hControl);
|
|
SetActiveWindow(hControl);
|
|
SetWindowLongPtr(hDlg, DWLP_MSGRESULT, PSNRET_INVALID);
|
|
return TRUE;
|
|
}
|
|
szArchiveFolder[0] = 0; // set string to empty string
|
|
}
|
|
|
|
if(!Connect(hDlg, TRUE))
|
|
{
|
|
SetWindowLongPtr(hDlg, DWLP_MSGRESULT, PSNRET_INVALID);
|
|
return TRUE;
|
|
}
|
|
|
|
//
|
|
// save incoming archive folder info
|
|
//
|
|
if(!FaxGetArchiveConfiguration(g_hFaxSvcHandle, FAX_MESSAGE_FOLDER_INBOX, &pFaxArchiveConfig))
|
|
{
|
|
dwRes = GetLastError();
|
|
Error(( "FaxGetArchiveConfiguration(FAX_MESSAGE_FOLDER_INBOX) failed. Error code is %d.\n", dwRes));
|
|
goto ApplyExit;
|
|
}
|
|
|
|
bEnabled = (IsDlgButtonChecked(hDlg, IDC_INCOMING) == BST_CHECKED);
|
|
GetDlgItemText(hDlg, IDC_INCOMING_FOLDER, szArchiveFolder, MAX_PATH);
|
|
ValidatePath(szArchiveFolder);
|
|
|
|
pFaxArchiveConfig->bUseArchive = bEnabled;
|
|
pFaxArchiveConfig->lpcstrFolder = szArchiveFolder;
|
|
|
|
if (!FaxSetArchiveConfiguration(g_hFaxSvcHandle, FAX_MESSAGE_FOLDER_INBOX, pFaxArchiveConfig))
|
|
{
|
|
dwRes = GetLastError();
|
|
Error(("FaxSetArchiveConfiguration(FAX_MESSAGE_FOLDER_INBOX) failed. Error code is %d.\n", dwRes));
|
|
goto ApplyExit;
|
|
}
|
|
|
|
FaxFreeBuffer(pFaxArchiveConfig);
|
|
pFaxArchiveConfig = NULL;
|
|
|
|
//
|
|
// save outgoing archive folder info
|
|
//
|
|
|
|
if(!FaxGetArchiveConfiguration(g_hFaxSvcHandle, FAX_MESSAGE_FOLDER_SENTITEMS, &pFaxArchiveConfig))
|
|
{
|
|
dwRes = GetLastError();
|
|
Error(("FaxGetArchiveConfiguration(FAX_MESSAGE_FOLDER_SENTITEMS) failed. Error code is %d.\n", dwRes));
|
|
goto ApplyExit;
|
|
}
|
|
|
|
bEnabled = (IsDlgButtonChecked(hDlg, IDC_OUTGOING) == BST_CHECKED);
|
|
GetDlgItemText(hDlg, IDC_OUTGOING_FOLDER, szArchiveFolder, MAX_PATH);
|
|
ValidatePath(szArchiveFolder);
|
|
|
|
pFaxArchiveConfig->bUseArchive = bEnabled;
|
|
pFaxArchiveConfig->lpcstrFolder = szArchiveFolder;
|
|
|
|
if(!FaxSetArchiveConfiguration(g_hFaxSvcHandle, FAX_MESSAGE_FOLDER_SENTITEMS, pFaxArchiveConfig))
|
|
{
|
|
dwRes = GetLastError();
|
|
Error(("FaxSetArchiveConfiguration(FAX_MESSAGE_FOLDER_SENTITEMS) failed. Error code is %d.\n", dwRes));
|
|
goto ApplyExit;
|
|
}
|
|
|
|
Notify_UnChange(hDlg);
|
|
|
|
ApplyExit:
|
|
DisConnect();
|
|
|
|
if (pFaxArchiveConfig)
|
|
{
|
|
FaxFreeBuffer(pFaxArchiveConfig);
|
|
}
|
|
|
|
if (dwRes != 0)
|
|
{
|
|
DisplayErrorMessage(hDlg, 0, dwRes);
|
|
SetWindowLongPtr(hDlg, DWLP_MSGRESULT, PSNRET_INVALID);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
default :
|
|
break;
|
|
} // switch
|
|
|
|
break;
|
|
}
|
|
|
|
case WM_HELP:
|
|
WinHelpContextPopup(((LPHELPINFO)lParam)->dwContextId, hDlg);
|
|
return TRUE;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
INT_PTR
|
|
CALLBACK
|
|
RemoteInfoDlgProc(
|
|
HWND hDlg,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
)
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Procedure for handling the archive folder tab
|
|
|
|
Arguments:
|
|
|
|
hDlg - Identifies the property sheet page
|
|
uMsg - Specifies the message
|
|
wParam - Specifies additional message-specific information
|
|
lParam - Specifies additional message-specific information
|
|
|
|
Return Value:
|
|
|
|
Depends on the value of message parameter
|
|
|
|
--*/
|
|
|
|
{
|
|
return FALSE;
|
|
}
|
|
|