WindowsXP-SP1/enduser/netmeeting/nmrk/fileparm.cpp

265 lines
8.1 KiB
C++

#include "Precomp.h"
#include "resource.h"
#include "global.h"
#include "PropPg.h"
//#include "SelTargt.h"
#include "FileParm.h"
#include "nmakwiz.h"
////////////////////////////////////////////////////////////////////////////////////////////////////
// Static member vars
/* static */ CDistributionSheet* CDistributionSheet::ms_pDistributionFileSheet = NULL;
/* static */ int CDistributionSheet::ms_MaxDistributionFilePathLen;
/* static */ TCHAR CDistributionSheet::ms_szOFNData[ MAX_PATH];
////////////////////////////////////////////////////////////////////////////////////////////////////
// Static member fns
BOOL APIENTRY CDistributionSheet::DlgProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) {
switch( message )
{
case WM_INITDIALOG:
{
PropSheet_SetWizButtons( GetParent( hDlg ), PSWIZB_NEXT | PSWIZB_BACK );
ms_pDistributionFileSheet->CreateFilePanes(hDlg);
return TRUE;
}
case WM_COMMAND:
{
switch (GET_WM_COMMAND_ID(wParam, lParam))
{
case IDC_BUTTON_BROWSE_DISTRIBUTION_FILE_PATH:
{
switch (GET_WM_COMMAND_CMD(wParam, lParam))
{
case BN_CLICKED:
{
ms_pDistributionFileSheet->m_pDistroFilePane->QueryFilePath( );
return TRUE;
break;
}
}
break;
}
case IDC_BUTTON_BROWSE_AUTO_CONFIG_PATH:
{
switch (GET_WM_COMMAND_CMD(wParam, lParam))
{
case BN_CLICKED:
{
ms_pDistributionFileSheet->m_pAutoFilePane->QueryFilePath( );
return TRUE;
break;
}
}
break;
}
}
break;
}
case WM_NOTIFY:
{
switch( reinterpret_cast< NMHDR FAR* >( lParam )->code )
{
case PSN_QUERYCANCEL:
SetWindowLong( hDlg, DWL_MSGRESULT, !VerifyExitMessageBox());
return TRUE;
case PSN_SETACTIVE:
g_hwndActive = hDlg;
PropSheet_SetWizButtons( GetParent( hDlg ), PSWIZB_NEXT | PSWIZB_BACK );
ms_pDistributionFileSheet->m_pDistroFilePane->Validate(FALSE);
ms_pDistributionFileSheet->m_pAutoFilePane->Validate(FALSE);
return TRUE;
case PSN_WIZNEXT:
// Distro
if( !ms_pDistributionFileSheet->m_pDistroFilePane->Validate(TRUE) )
{
SetWindowLong( hDlg, DWL_MSGRESULT, -1 );
return TRUE;
}
// AutoConf
if( !ms_pDistributionFileSheet->m_pAutoFilePane->Validate(TRUE) )
{
SetWindowLong( hDlg, DWL_MSGRESULT, -1 );
return TRUE;
}
if( ms_pDistributionFileSheet->m_pAutoFilePane->OptionEnabled() )
{
if( !Edit_GetTextLength(
GetDlgItem( ms_pDistributionFileSheet->m_pAutoFilePane->GetHwnd(),
IDC_AUTOCONF_URL ) ) )
{
NmrkMessageBox(MAKEINTRESOURCE(IDS_NEED_CONF_SERVER), NULL, MB_OK | MB_ICONWARNING );
SetWindowLong( hDlg, DWL_MSGRESULT, -1 );
return TRUE;
}
}
else if( ms_pDistributionFileSheet->m_bHadAutoConf )
{
if( IDNO == NmrkMessageBox(MAKEINTRESOURCE(IDS_TURNING_OFF_AUTOCONF), NULL, MB_YESNO | MB_ICONWARNING ) )
{
ms_pDistributionFileSheet->m_pAutoFilePane->SetCheck( IDC_CHECK_AUTOCONFIG_CLIENTS, TRUE );
SetWindowLong( hDlg, DWL_MSGRESULT, -1 );
return TRUE;
}
else
{
ms_pDistributionFileSheet->m_pAutoFilePane->SetEditData( IDC_EDIT_AUTO_CONFIG_FILE_PATH, ms_pDistributionFileSheet->m_szLastLocation );
ms_pDistributionFileSheet->m_bLastRoundUp = TRUE;
}
}
return TRUE;
}
}
default:
break;
}
return FALSE;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// Member fns
CDistributionSheet::CDistributionSheet( void )
: m_PropertySheetPage( MAKEINTRESOURCE( IDD_PROPPAGE_DEFAULT ),
( DLGPROC ) CDistributionSheet::DlgProc /*,
PSP_HASHELP */
),
m_pDistroFilePane( NULL ), m_pAutoFilePane( NULL ), m_bHadAutoConf( FALSE ), m_bLastRoundUp( FALSE ), m_szLastLocation( NULL )
{
ZeroMemory( &m_ofn, sizeof( OPENFILENAME ) );
ms_MaxDistributionFilePathLen = MAX_PATH;
ms_pDistributionFileSheet = this;
}
CDistributionSheet::~CDistributionSheet( void )
{
delete m_pDistroFilePane;
m_pDistroFilePane = NULL;
delete m_pAutoFilePane;
m_pAutoFilePane = NULL;
delete [] m_szLastLocation;
m_szLastLocation = NULL;
ms_pDistributionFileSheet = NULL;
}
void CDistributionSheet::CreateFilePanes(HWND hWndDlg)
{
RECT rect;
GetClientRect( hWndDlg, &rect );
int iWidth = rect.right - CPropertyDataWindow2::mcs_iLeft;
int iTop = CPropertyDataWindow2::mcs_iTop + CPropertyDataWindow2::mcs_iBorder;
// The top panel is being given 1/3 of the vertical space
int iHeight = MulDiv( rect.bottom, 1, 3 );
m_pDistroFilePane = new CFilePanePropWnd2(hWndDlg,
IDD_FILEPANE_DISTRO,
TEXT("IDD_FILEPANE_DISTRO"),
0,
CPropertyDataWindow2::mcs_iLeft,
iTop,
iWidth,
iHeight );
HWND hwndCond = GetDlgItem( m_pDistroFilePane->GetHwnd(), IDC_CHECK_CREATE_DISTRIBUTION );
m_pDistroFilePane->ConnectControlsToCheck( IDC_CHECK_CREATE_DISTRIBUTION, 2,
new CControlID( hwndCond,
IDC_CHECK_CREATE_DISTRIBUTION,
IDC_EDIT_DISTRIBUTION_FILE_PATH,
CControlID::EDIT ),
new CControlID( hwndCond,
IDC_CHECK_CREATE_DISTRIBUTION,
IDC_BUTTON_BROWSE_DISTRIBUTION_FILE_PATH,
// Note this is not a check but I don't think I care
CControlID::CHECK ) );
m_pDistroFilePane->SetFilePane( FALSE, IDC_EDIT_DISTRIBUTION_FILE_PATH,
IDC_CHECK_CREATE_DISTRIBUTION,
IDC_BUTTON_BROWSE_DISTRIBUTION_FILE_PATH,
TEXT( "Application (*.exe)" ),
TEXT( ".exe" ),
TEXT( "Nm3c.exe" ) );
m_pDistroFilePane->SetCheck( IDC_CHECK_CREATE_DISTRIBUTION, TRUE );
//iHeight = rect.bottom - iHeight;
m_pAutoFilePane = new CFilePanePropWnd2(hWndDlg,
IDD_FILEPANE_AUTOCONF,
TEXT("IDD_FILEPANE_AUTOCONF"),
0,
CPropertyDataWindow2::mcs_iLeft,
iHeight,
iWidth,
rect.bottom - iHeight );
hwndCond = GetDlgItem( m_pAutoFilePane->GetHwnd(), IDC_CHECK_AUTOCONFIG_CLIENTS );
m_pAutoFilePane->ConnectControlsToCheck( IDC_CHECK_AUTOCONFIG_CLIENTS, 3,
new CControlID( hwndCond,
IDC_CHECK_AUTOCONFIG_CLIENTS,
IDC_EDIT_AUTO_CONFIG_FILE_PATH,
CControlID::EDIT ),
new CControlID( hwndCond,
IDC_CHECK_AUTOCONFIG_CLIENTS,
IDC_AUTOCONF_URL,
CControlID::EDIT ),
new CControlID( hwndCond,
IDC_CHECK_AUTOCONFIG_CLIENTS,
IDC_BUTTON_BROWSE_AUTO_CONFIG_PATH,
// Note this is not a check but I don't think I care
CControlID::CHECK ) );
m_pAutoFilePane->SetFilePane( FALSE, IDC_EDIT_AUTO_CONFIG_FILE_PATH,
IDC_CHECK_AUTOCONFIG_CLIENTS,
IDC_BUTTON_BROWSE_AUTO_CONFIG_PATH,
TEXT( "Application Settings(*.inf)" ),
TEXT( ".inf" ),
TEXT( "nm3conf.inf" ) );
m_pAutoFilePane->SetCheck( IDC_CHECK_AUTOCONFIG_CLIENTS, FALSE );
if (g_pWiz->m_IntroSheet.GetFilePane()->OptionEnabled())
{
m_pDistroFilePane->ReadSettings();
m_pAutoFilePane->ReadSettings();
}
if (m_bHadAutoConf = m_pAutoFilePane->OptionEnabled())
{
m_szLastLocation = new TCHAR[ MAX_PATH ];
assert( m_szLastLocation );
m_pAutoFilePane->GetPathAndFile( m_szLastLocation );
}
m_pAutoFilePane->ShowWindow( TRUE );
m_pDistroFilePane->ShowWindow( TRUE );
}