|
|
#include "stdafx.h"
#include "fspext.h"
#include "FSP.h"
/////////////////////////////////////////////////////////////////////////////
// CFSPComponentData
static const GUID CFSPGUID_NODETYPE = { 0xde58ae00, 0x4c0f, 0x11d1, {0x90, 0x83, 0x00, 0xa0, 0xc9, 0x0a, 0xb5, 0x04}}; const GUID* CFSPData::m_NODETYPE = &CFSPGUID_NODETYPE; const TCHAR* CFSPData::m_SZNODETYPE = _T("de58ae00-4c0f-11d1-9083-00a0c90ab504"); const TCHAR* CFSPData::m_SZDISPLAY_NAME = _T("CFSP"); const CLSID* CFSPData::m_SNAPIN_CLASSID = &CLSID_FSP;
LRESULT CFSPPage::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { //::SendMessage(GetParent(), PSM_SETWIZBUTTONS, 0, PSWIZB_FINISH);
SetChangedFlag (FALSE); switch (m_LoggingLevel) { case LOGGING_NONE: CheckDlgButton( IDC_LOG_NONE, TRUE);
::EnableWindow( GetDlgItem( IDC_LOGLOCATION ), FALSE ); ::EnableWindow( GetDlgItem( IDC_LOCATION_LABEL ), FALSE ); ::EnableWindow( GetDlgItem( IDC_LOGBROWSE ), FALSE ); break; case LOGGING_ERRORS: CheckDlgButton( IDC_LOG_ERRORS, TRUE);
::EnableWindow( GetDlgItem( IDC_LOGLOCATION ), TRUE ); ::EnableWindow( GetDlgItem( IDC_LOCATION_LABEL ), TRUE ); ::EnableWindow( GetDlgItem( IDC_LOGBROWSE ), TRUE ); break; case LOGGING_ALL: CheckDlgButton( IDC_LOG_ALL , TRUE);
::EnableWindow( GetDlgItem( IDC_LOGLOCATION ), TRUE ); ::EnableWindow( GetDlgItem( IDC_LOCATION_LABEL ), TRUE ); ::EnableWindow( GetDlgItem( IDC_LOGBROWSE ), TRUE );
break; default: CheckDlgButton( IDC_LOG_NONE , TRUE);
::EnableWindow( GetDlgItem( IDC_LOGLOCATION ), FALSE ); ::EnableWindow( GetDlgItem( IDC_LOCATION_LABEL ), FALSE ); ::EnableWindow( GetDlgItem( IDC_LOGBROWSE ), FALSE ); }
SendDlgItemMessage( IDC_LOGLOCATION, EM_SETLIMITTEXT, MAX_PATH - 2, 0 );
if (m_LoggingDirectory) { SetDlgItemText( IDC_LOGLOCATION, m_LoggingDirectory ); }
return 1; }
VOID CFSPPage::SetChangedFlag( BOOL Flag ) { PropSheet_Changed( GetParent(), m_hWnd ); m_bChanged = TRUE; }
LRESULT CFSPPage::DisableLogging(INT code, INT id, HWND hwnd, BOOL& bHandled) { ::EnableWindow( GetDlgItem( IDC_LOGLOCATION ), FALSE ); ::EnableWindow( GetDlgItem( IDC_LOCATION_LABEL ), FALSE ); ::EnableWindow( GetDlgItem( IDC_LOGBROWSE ), FALSE );
SetChangedFlag(TRUE); return 1; }
LRESULT CFSPPage::EnableLogging(INT code, INT id, HWND hwnd, BOOL& bHandled) { ::EnableWindow( GetDlgItem( IDC_LOGLOCATION ), TRUE ); ::EnableWindow( GetDlgItem( IDC_LOCATION_LABEL ), TRUE ); ::EnableWindow( GetDlgItem( IDC_LOGBROWSE ), TRUE );
SetChangedFlag(TRUE); return 1; }
LRESULT CFSPPage::OnBrowseDir(INT code, INT id, HWND hwnd, BOOL& bHandled) { BrowseForDirectory(); return 1; }
BOOL CFSPPage::OnApply() { //
// if there aren't any changes, don't commit anything
//
if (!m_bChanged) { return TRUE; }
if (IsDlgButtonChecked(IDC_LOG_NONE)== BST_CHECKED) { m_LoggingLevel = LOGGING_NONE; } else if (IsDlgButtonChecked(IDC_LOG_ERRORS)== BST_CHECKED) { m_LoggingLevel = LOGGING_ERRORS; } else if (IsDlgButtonChecked(IDC_LOG_ALL)== BST_CHECKED) { m_LoggingLevel = LOGGING_ALL; } else m_LoggingLevel = LOGGING_NONE;
if (m_LoggingLevel != LOGGING_NONE) { if (m_LoggingDirectory) { MemFree(m_LoggingDirectory); } m_LoggingDirectory = (LPTSTR) MemAlloc ( MAX_PATH ); if (!GetDlgItemText( IDC_LOGLOCATION,m_LoggingDirectory, MAX_PATH - 1 ) ) { MessageBox(TEXT("You must enter a logging location"), TEXT("Logging Error"), MB_OK | MB_ICONEXCLAMATION); MemFree(m_LoggingDirectory); m_LoggingDirectory = NULL; ::SetFocus(GetDlgItem(IDC_LOGLOCATION)); return FALSE; } else { if (!ValidateLogLocation()) { MessageBox(TEXT("You must enter a logging location"), TEXT("Logging Error"), MB_OK | MB_ICONEXCLAMATION); MemFree(m_LoggingDirectory); m_LoggingDirectory = NULL; ::SetFocus(GetDlgItem(IDC_LOGLOCATION)); return FALSE; } } } else if (m_LoggingDirectory) { MemFree(m_LoggingDirectory); m_LoggingDirectory = TEXT(""); } if (!m_LogKey) { Assert(FALSE); } SetRegistryDword(m_LogKey,LOGLEVEL,m_LoggingLevel); SetRegistryString(m_LogKey,LOGLOCATION,m_LoggingDirectory);
MessageBox(TEXT("You must restart the fax service for your logging changes to take effect"), TEXT("Logging Change"), MB_OK);
SetChangedFlag(FALSE);
return TRUE;
}
BOOL CFSPPage::BrowseForDirectory( )
/*++
Routine Description:
Browse for a directory
Arguments:
hDlg - Specifies the dialog window on which the Browse button is displayed textFieldId - Specifies the text field adjacent to the Browse button titleStrId - Specifies the title to be displayed in the browse window
Return Value:
TRUE if successful, FALSE if the user presses Cancel
--*/
{ LPITEMIDLIST pidl; WCHAR buffer[MAX_PATH]; WCHAR title[MAX_TITLE_LEN]; VOID SHFree(LPVOID); BOOL result = FALSE; LPMALLOC pMalloc;
BROWSEINFO bi = {
m_hWnd, NULL, buffer, title, BIF_RETURNONLYFSDIRS, NULL, (LPARAM) buffer, };
if (! LoadString(_Module.m_hInst, IDS_BROWSE_TITLE, title, MAX_TITLE_LEN)) title[0] = 0;
if (! GetDlgItemText( IDC_LOGLOCATION, buffer, MAX_PATH)) buffer[0] = 0;
if (pidl = SHBrowseForFolder(&bi)) {
if (SHGetPathFromIDList(pidl, buffer)) {
if (wcslen(buffer) > MAX_PATH-2) { Assert(FALSE); } else { SetDlgItemText(IDC_LOGLOCATION, buffer); result = TRUE; } }
SHGetMalloc(&pMalloc);
pMalloc->Free(pidl);
pMalloc->Release(); }
return result; }
BOOL CFSPPage::ValidateLogLocation() { HANDLE hFile = INVALID_HANDLE_VALUE; TCHAR file[MAX_PATH];
wsprintf(file,TEXT("%s\\faxt30.log"),m_LoggingDirectory);
hFile = CreateFile(file,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_ARCHIVE,NULL);
if (hFile == INVALID_HANDLE_VALUE) { CloseHandle(hFile); return FALSE; } CloseHandle(hFile); DeleteFile(m_LoggingDirectory); return TRUE; }
|