|
|
#include "precomp.h"
#include "resource.h"
#include <algorithm>
#include "global.h"
#include "PropPg.h"
#include "SetSht.h"
#include "WndProcs.h"
#include "nmakwiz.h"
#include "nmakreg.h"
#include <common.h>
////////////////////////////////////////////////////////////////////////////////////////////////////
// Static member vars
CSettingsSheet* CSettingsSheet::ms_pSettingsSheet = NULL;
// This is a map to keep track of the PropertyDataWindows
/* static */ map<UINT, HWND> CSettingsSheet::ms_FocusList; /* static */ map< UINT, CPropertyDataWindow2* > CSettingsSheet::ms_PropertyWindows; /* static */ list< UINT > CSettingsSheet::ms_CategoryIDList;
////////////////////////////////////////////////////////////////////////////////////////////////////
// Static member fns
/* static */ BOOL APIENTRY CSettingsSheet::DlgProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) {
BOOL bRetval; NMHDR FAR* pnmhdr; switch( message ) { case WM_INITDIALOG: ms_pSettingsSheet->m_hWndDlg = hDlg; ms_pSettingsSheet->_InitWindows(); ms_pSettingsSheet->PrepSettings(); ms_pSettingsSheet->_SetButtons(); return TRUE;
case WM_CHAR: case WM_KEYDOWN: return FALSE;
case WM_NOTIFY: pnmhdr = reinterpret_cast< NMHDR FAR* >( lParam ); switch( pnmhdr -> code ) {
case PSN_QUERYCANCEL: SetWindowLong( hDlg, DWL_MSGRESULT, !VerifyExitMessageBox()); return TRUE; break; case PSN_SETACTIVE: g_hwndActive = hDlg; ms_pSettingsSheet->_SetButtons(); return TRUE; break;
case PSN_WIZNEXT: if( !ms_pSettingsSheet -> _IsDataValid() ) { SetWindowLong( hDlg, DWL_MSGRESULT, -1); }
return TRUE; break;
case PSN_WIZBACK: { int iRet = NmrkMessageBox(MAKEINTRESOURCE(IDS_ERASE_ALL_SETTINGS), NULL, MB_YESNO | MB_ICONQUESTION ); if( IDNO == iRet ) { SetWindowLong( hDlg, DWL_MSGRESULT, -1 ); } return TRUE; break; } } break;
default: break;
}
return FALSE;
}
/* static */ bool CSettingsSheet::IsGateKeeperModeSelected(void) { bool bRet = false; if( ms_pSettingsSheet ) { if( ms_pSettingsSheet->GetCategoryCheck( IDC_SET_CALLING_OPTIONS ) ) { if( ms_pSettingsSheet->GetCheckData( IDC_SET_CALLING_OPTIONS, IDC_RADIO_CALLMODE_GATEKEEPER ) ) { bRet = TRUE; } } } return bRet;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// Member fns
CSettingsSheet::CSettingsSheet( void ) : m_PropertySheetPage( MAKEINTRESOURCE( IDD_PROPPAGE_DEFAULT ), ( DLGPROC ) CSettingsSheet::DlgProc ), m_uPropWndShowing( 0 ) { if( NULL == ms_pSettingsSheet ) { ms_pSettingsSheet = this; } }
CSettingsSheet::~CSettingsSheet( void ) { _KillPropertyDataWindows(); }
void CSettingsSheet::SetFocus( UINT catID ) { map< UINT, HWND >::iterator I = ms_FocusList.find( catID ); if( I != ms_FocusList.end() ) { ::SetFocus( (*I).second ); } }
// Allocates the memory needed!!!
// User must dealloc
LPTSTR CSettingsSheet::GetStringData( UINT idCategory, UINT idEdit, LPTSTR *sz ) { *sz = NULL; map< UINT, CPropertyDataWindow2* >::iterator I = ms_PropertyWindows . find( idCategory ); if( ms_PropertyWindows . end() != I ) { ULONG uLen = ( *I ) . second -> GetEditDataLen( idEdit ); if( !uLen ) { return NULL; } *sz = new TCHAR[ uLen + 1]; ( *I ) . second -> GetEditData( idEdit, *sz, uLen + 1 ); return *sz; } return NULL; }
BOOL CSettingsSheet::SetCheckData( UINT idCategory, UINT idCheck, BOOL bSet ) {
map< UINT, CPropertyDataWindow2* >::iterator I = ms_PropertyWindows . find( idCategory ); if( ms_PropertyWindows . end() != I ) { ( *I ) . second -> SetCheck( idCheck, bSet ); return TRUE; }
return FALSE; }
BOOL CSettingsSheet::GetCheckData( UINT idCategory, UINT idCheck ) {
if( FALSE == m_pCategoryList -> GetCheck( idCategory ) ) { return FALSE; } map< UINT, CPropertyDataWindow2* >::iterator I = ms_PropertyWindows . find( idCategory ); if( ms_PropertyWindows . end() != I ) { return ( *I ) . second -> GetCheck( idCheck ); }
return FALSE; }
void CSettingsSheet::EnableWindow( UINT idCategory, BOOL bShow ) { map< UINT, CPropertyDataWindow2* >::iterator I = ms_PropertyWindows . find( idCategory ); if( ms_PropertyWindows . end() != I ) { ( *I ) . second -> EnableWindow( bShow ); } else { OutputDebugString( TEXT("Error in CSettingsSheet::EnableWindow") ); } }
BOOL CSettingsSheet::IsShowing( UINT idCategory ) { return( idCategory == m_uPropWndShowing ); }
void CSettingsSheet::ShowWindow( UINT idCategory, BOOL bShow ) { map< UINT, CPropertyDataWindow2* >::iterator I = ms_PropertyWindows . find( idCategory ); if( ms_PropertyWindows . end() != I ) { if( 0 != m_uPropWndShowing ) { map< UINT, CPropertyDataWindow2* >::iterator it = ms_PropertyWindows . find( m_uPropWndShowing ); (*it).second-> ShowWindow( FALSE ); SetWindowLong( GetDlgItem( m_pCategoryList->GetHwnd(), m_uPropWndShowing), GWL_USERDATA, 0 ); } ( *I ) . second -> ShowWindow( bShow ); m_uPropWndShowing = idCategory; } }
void CSettingsSheet::ShowWindow( HWND hWnd, BOOL bShow ) { ShowWindow( GetWindowLong( hWnd, GWL_ID ), bShow ); }
void CSettingsSheet::_KillPropertyDataWindows( void ) { map< UINT, CPropertyDataWindow2* >::iterator I = ms_PropertyWindows . begin(); while( I != ms_PropertyWindows . end() ) { delete ( *I ) . second; I++; }
ms_PropertyWindows . erase( ms_PropertyWindows . begin(), ms_PropertyWindows . end() );
// TODO - This is being deleted else where... I should find where
// delete m_pCategoryList;
}
BOOL CSettingsSheet::_InitWindows(void) { int iTotal = 9; int iFractionTop = 4; RECT rect; GetClientRect( m_hWndDlg, &rect ); int iWidth = rect.right - CPropertyDataWindow2::mcs_iLeft - CPropertyDataWindow2::mcs_iBorder; int iHeight = MulDiv( (rect.bottom - CPropertyDataWindow2::mcs_iBorder ), iFractionTop, iTotal ); m_pCategoryList = new CPropertyDataWindow2( m_hWndDlg, IDD_CATEGORY_LIST, TEXT("IDD_CATEGORY_LIST"), CatListWndProc, 0, CPropertyDataWindow2::mcs_iLeft, CPropertyDataWindow2::mcs_iTop, iWidth, iHeight ); m_pCategoryList -> ShowWindow( TRUE ); if( !_AddPropertyDataWindows( CPropertyDataWindow2::mcs_iLeft, CPropertyDataWindow2::mcs_iTop + iHeight + CPropertyDataWindow2::mcs_iBorder, iWidth, MulDiv( (rect.bottom - CPropertyDataWindow2::mcs_iBorder ), iTotal - iFractionTop, iTotal ) ) ) { return FALSE; } return TRUE; }
void CSettingsSheet::PrepSettings() { if (g_pWiz->m_IntroSheet.GetFilePane()->OptionEnabled()) { _ReadSettings(); } else { m_pCategoryList->Reset(); for( map< UINT, CPropertyDataWindow2* >::const_iterator it = ms_PropertyWindows.begin(); it != ms_PropertyWindows.end(); it++ ) { (*it).second->Reset(); } } }
void CSettingsSheet::_ReadSettings() { for( map< UINT, CPropertyDataWindow2* >::const_iterator it = ms_PropertyWindows.begin(); it != ms_PropertyWindows.end(); it++ ) { (*it).second->ReadSettings(); } m_pCategoryList->ReadSettings();
for( list< UINT >::const_iterator i = ms_CategoryIDList.begin(); i != ms_CategoryIDList.end(); i++ ) { if( GetCategoryCheck( *i ) ) { ms_PropertyWindows[ *i ]->EnableWindow( TRUE ); } } }
void CSettingsSheet::WriteSettings() { for( map< UINT, CPropertyDataWindow2* >::const_iterator it = ms_PropertyWindows.begin(); it != ms_PropertyWindows.end(); it++ ) { (*it).second->WriteSettings(); } m_pCategoryList->WriteSettings(); }
void CSettingsSheet::WriteToINF( HANDLE hFile ) { CPropertyDataWindow2::MapControlsToRegKeys();
_INFComment( hFile, TEXT("Categories") ); m_pCategoryList->WriteToINF( hFile, TRUE );
for( map< UINT, CPropertyDataWindow2* >::const_iterator it = ms_PropertyWindows.begin(); it != ms_PropertyWindows.end(); it++ ) { { HWND hwnd = GetDlgItem( m_pCategoryList->GetHwnd(), (*it).first ); int iLen = Button_GetTextLength( hwnd ) + 1; LPTSTR szButtonText = new TCHAR[ iLen ]; Button_GetText( hwnd, szButtonText, iLen );
_INFComment( hFile, szButtonText );
delete [] szButtonText; }
(*it).second->WriteToINF( hFile, GetCategoryCheck( (*it).first ) ); } }
BOOL CSettingsSheet::_INFComment( HANDLE hFile, LPCTSTR sz ) { #if _NMAKUSEINFCOMMENTS
DWORD dwWritten; WriteFile( hFile, (void *)TEXT(";;"), lstrlen( TEXT(";;") ), &dwWritten, NULL ); WriteFile( hFile, (void *)sz, lstrlen( sz ), &dwWritten, NULL ); return WriteFile( hFile, (void *)TEXT("\r\n"), lstrlen( TEXT("\r\n") ), &dwWritten, NULL ); #else
return 0; #endif
}
BOOL CSettingsSheet::_AddPropertyDataWindows( int iX, int iY, int iWidth, int iHeight ) {
UINT ItemID; CPropertyDataWindow2* pPropDataWnd;
_KillPropertyDataWindows();
//
// CALLING
//
////////
ItemID = IDC_SET_CALLING_OPTIONS; m_pCategoryList->SetEnableListID( 1, ItemID ); ms_CategoryIDList.push_front( ItemID ); pPropDataWnd = new CPropertyDataWindow2( m_hWndDlg, IDD_SET_CALLING_OPTIONS, TEXT("IDD_SET_CALLING_OPTIONS"), 0, iX, iY, iWidth, iHeight ); { // Calling method radio buttons
HWND hwnd;
// DIRECT radio item is default CALLING_MODE
hwnd = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_RADIO_CALLMODE_DIRECT ); SetWindowLong( hwnd, GWL_USERDATA, CALLING_MODE_DIRECT ); Button_SetCheck(hwnd, BST_CHECKED);
hwnd = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_RADIO_CALLMODE_GATEKEEPER ); SetWindowLong( hwnd, GWL_USERDATA, CALLING_MODE_GATEKEEPER );
// Netspeed radio buttons
hwnd = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_RADIO_NETSPEED_144 ); SetWindowLong( hwnd, GWL_USERDATA, BW_144KBS );
hwnd = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_RADIO_NETSPEED_288 ); SetWindowLong( hwnd, GWL_USERDATA, BW_288KBS );
hwnd = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_RADIO_NETSPEED_ISDN ); SetWindowLong( hwnd, GWL_USERDATA, BW_ISDN );
// LAN radio item is default NETSPEED
hwnd = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_RADIO_NETSPEED_LAN ); SetWindowLong( hwnd, GWL_USERDATA, BW_MOREKBS ); Button_SetCheck(hwnd, BST_CHECKED);
pPropDataWnd->SetEnableListID( 9, IDC_RADIO_CALLMODE_DIRECT, IDC_RADIO_CALLMODE_GATEKEEPER, IDC_CHECK_NOCHANGECALLMODE, IDC_DISABLE_AUTOACCEPT, IDC_PERSIST_AUTOACCEPT, IDC_RADIO_NETSPEED_144, IDC_RADIO_NETSPEED_288, IDC_RADIO_NETSPEED_ISDN, IDC_RADIO_NETSPEED_LAN); }
ms_PropertyWindows[ ItemID ] = pPropDataWnd; ms_FocusList[ ItemID ] = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_RADIO_CALLMODE_DIRECT ); pPropDataWnd -> EnableWindow( FALSE );
////////
ItemID = IDC_SET_SECURITY_OPTIONS; m_pCategoryList->SetEnableListID( 1, ItemID ); ms_CategoryIDList.push_front( ItemID ); pPropDataWnd = new CPropertyDataWindow2( m_hWndDlg, IDD_SECURITY, TEXT("IDD_SECURITY"), 0, iX, iY, iWidth, iHeight ); { HWND hwnd;
// DEFAULT radio item is default SECURITY
hwnd = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_RADIO_SECURITY_DEFAULT ); SetWindowLong( hwnd, GWL_USERDATA, DEFAULT_POL_SECURITY); Button_SetCheck(hwnd, BST_CHECKED); hwnd = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_RADIO_SECURITY_REQUIRED ); SetWindowLong( hwnd, GWL_USERDATA, REQUIRED_POL_SECURITY);
hwnd = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_RADIO_SECURITY_DISABLED ); SetWindowLong( hwnd, GWL_USERDATA, DISABLED_POL_SECURITY);
pPropDataWnd -> SetEnableListID( 5, IDC_RADIO_SECURITY_DEFAULT, IDC_RADIO_SECURITY_REQUIRED, IDC_RADIO_SECURITY_DISABLED, IDC_REQUIRE_COMPLETE_AUTHENTICATION, IDC_SET_RDN_FOR_REQUIRED_CA );
//
// Link Set URL checkbox with edit field
//
{ HWND hwndCond = GetDlgItem(pPropDataWnd->GetHwnd(), IDC_SET_RDN_FOR_REQUIRED_CA); pPropDataWnd->ConnectControlsToCheck( IDC_SET_RDN_FOR_REQUIRED_CA, 1, new CControlID(hwndCond, IDC_SET_RDN_FOR_REQUIRED_CA, IDC_EDIT_SET_RDN_FOR_REQUIRED_CA, CControlID::EDIT ) ); } } ms_PropertyWindows[ ItemID ] = pPropDataWnd; ms_FocusList[ ItemID ] = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_RADIO_SECURITY_DEFAULT ); pPropDataWnd -> EnableWindow( FALSE );
//
// A/V OPTIONS
//
//////////
ItemID = IDC_RESTRICT_THE_USE_OF_AUDIO; m_pCategoryList->SetEnableListID( 1, ItemID ); ms_CategoryIDList.push_front( ItemID ); pPropDataWnd = new CPropertyDataWindow2( m_hWndDlg, IDD_AUDIO, TEXT("IDD_AUDIO"), 0, iX, iY, iWidth, iHeight ); pPropDataWnd -> SetEnableListID( 7, IDC_PREVENT_THE_USER_FROM_USING_AUDIO, IDC_ENABLE_DIRECT_SOUND, IDC_NOCHANGE_DIRECT_SOUND, IDC_DISABLE_FULL_DUPLEX_AUDIO, IDC_CREATE_AN_AUDIO_LOG_FILE, IDC_CHECK_MUTE_SPEAKER_BY_DEFAULT, IDC_CHECK_MUTE_MICROPHONE_BY_DEFAULT ); ms_PropertyWindows[ ItemID ] = pPropDataWnd; ms_FocusList[ ItemID ] = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_PREVENT_THE_USER_FROM_USING_AUDIO ); pPropDataWnd -> EnableWindow( FALSE );
//////////
ItemID = IDC_RESTRICT_THE_USE_OF_VIDEO; m_pCategoryList->SetEnableListID( 1, ItemID ); ms_CategoryIDList.push_front( ItemID ); pPropDataWnd = new CPropertyDataWindow2( m_hWndDlg, IDD_VIDEO, TEXT("IDD_VIDEO"), 0, iX, iY, iWidth, iHeight ); pPropDataWnd -> SetEnableListID( 2, IDC_DISABLE_SENDING_VIDEO, IDC_DISABLE_RECIEVING_VIDEO ); ms_PropertyWindows[ ItemID ] = pPropDataWnd; ms_FocusList[ ItemID ] = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_DISABLE_SENDING_VIDEO ); pPropDataWnd -> EnableWindow( FALSE );
////////
ItemID = IDC_LIMIT_AV_THROUGHPUT; m_pCategoryList->SetEnableListID( 1, ItemID ); ms_CategoryIDList.push_front( ItemID ); pPropDataWnd = new CPropertyDataWindow2( m_hWndDlg, IDD_LIMIT_AV_THROUGHPUT, TEXT("IDD_LIMIT_AV_THROUGHPUT"), RestrictAvThroughputWndProc, 0, iX, iY, iWidth, iHeight ); { CControlID *pControl = new CControlID( IDC_SLIDE_AV_THROUGHPUT, CControlID::SLIDER ); pControl->SetStaticID( IDC_STATIC_MAX_AV_THROUGHPUT ); pPropDataWnd->AddControl( pControl ); }
HWND hwndTrack = GetDlgItem( pPropDataWnd -> GetHwnd(), IDC_SLIDE_AV_THROUGHPUT );
TrackBar_ClearTics(hwndTrack, FALSE); TrackBar_SetRange(hwndTrack, FALSE, BW_ISDN_BITS / 1000, BW_SLOWLAN_BITS / 1000); TrackBar_SetTicFreq(hwndTrack, 10, 0); TrackBar_SetPageSize( hwndTrack, 5); TrackBar_SetThumbLength( hwndTrack, 5);
ms_PropertyWindows[ ItemID ] = pPropDataWnd; ms_FocusList[ ItemID ] = hwndTrack; pPropDataWnd -> EnableWindow( FALSE );
//
// TOOLS
//
/////////
ItemID = IDC_DISABLE_CHAT; m_pCategoryList->SetEnableListID( 1, ItemID ); ms_CategoryIDList.push_front( ItemID ); pPropDataWnd = new CPropertyDataWindow2( m_hWndDlg, IDD_CHAT, TEXT("IDD_CHAT"), 0, iX, iY, iWidth, iHeight ); ms_PropertyWindows[ ItemID ] = pPropDataWnd; pPropDataWnd -> EnableWindow( FALSE );
//////////
ItemID = IDC_RESTRICT_THE_USE_OF_FILE_TRANSFER; m_pCategoryList->SetEnableListID( 1, ItemID ); ms_CategoryIDList.push_front( ItemID ); pPropDataWnd = new CPropertyDataWindow2( m_hWndDlg, IDD_FILETRANSFER, TEXT("IDD_FILETRANSFER"), 0, iX, iY, iWidth, iHeight );
pPropDataWnd -> SetEnableListID( 2, IDC_PREVENT_THE_USER_FROM_SENDING_FILES, IDC_PREVENT_THE_USER_FROM_RECEIVING_FILES );
//
// Link max send size check box to inverse of prevent sending checkbox
//
{ HWND hwndCond = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_MAXIMUM_SIZE_OF_SENT_FILES ); pPropDataWnd -> ConnectControlsToCheck( IDC_MAXIMUM_SIZE_OF_SENT_FILES, 1, new CControlID( hwndCond, IDC_MAXIMUM_SIZE_OF_SENT_FILES, IDC_EDIT_MAXIMUM_SIZE_OF_SENT_FILES, CControlID::EDIT_NUM ) ); } ms_PropertyWindows[ ItemID ] = pPropDataWnd; ms_FocusList[ ItemID ] = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_PREVENT_THE_USER_FROM_SENDING_FILES ); pPropDataWnd -> EnableWindow( FALSE );
//////////
ItemID = IDC_RESTRICT_THE_USE_OF_SHARING; m_pCategoryList->SetEnableListID( 1, ItemID ); ms_CategoryIDList.push_front( ItemID ); pPropDataWnd = new CPropertyDataWindow2( m_hWndDlg, IDD_SHARING, TEXT("IDD_SHARING"), 0, iX, iY, iWidth, iHeight ); pPropDataWnd -> SetEnableListID( 7, IDC_DISABLE_ALL_SHARING_FEATURES, IDC_PREVENT_SHARING, IDC_PREVENT_SHARING_DESKTOP, IDC_PREVENT_SHARING_TRUECOLOR, IDC_PREVENT_SHARING_EXPLORER, IDC_PREVENT_SHARING_DOS, IDC_PREVENT_SHARING_CONTROL); ms_PropertyWindows[ ItemID ] = pPropDataWnd; ms_FocusList[ ItemID ] = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_DISABLE_ALL_SHARING_FEATURES );
pPropDataWnd -> EnableWindow( FALSE );
////////
ItemID = IDC_RESTRICT_THE_USE_OF_WHITEBOARD; m_pCategoryList->SetEnableListID( 1, ItemID ); ms_CategoryIDList.push_front( ItemID ); pPropDataWnd = new CPropertyDataWindow2( m_hWndDlg, IDD_WHITEBOARD, TEXT("IDD_WHITEBOARD"), 0, iX, iY, iWidth, iHeight );
pPropDataWnd -> SetEnableListID( 2, IDC_DISABLE_2XWHITEBOARD, IDC_DISABLE_WHITEBOARD); ms_PropertyWindows[ ItemID ] = pPropDataWnd; ms_FocusList[ ItemID ] = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_DISABLE_2XWHITEBOARD ); pPropDataWnd -> EnableWindow( FALSE );
//////////
ItemID = IDC_RESTRICT_THE_USE_OF_RDS; m_pCategoryList->SetEnableListID(1, ItemID); ms_CategoryIDList.push_front( ItemID ); pPropDataWnd = new CPropertyDataWindow2( m_hWndDlg, IDD_RDS, TEXT("IDD_RDS"), 0, iX, iY, iWidth, iHeight );
pPropDataWnd->SetEnableListID(2, IDC_DISABLE_RDS_ON_ALL, IDC_DISABLE_RDS_ON_WIN9X); ms_PropertyWindows[ ItemID ] = pPropDataWnd; ms_FocusList[ ItemID ] = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_DISABLE_RDS_ON_ALL ); pPropDataWnd->EnableWindow(FALSE);
//
// MISCELLANEOUS
//
////////
ItemID = IDC_RESTRICT_USE_OF_THE_OPTIONS_DIALOG; m_pCategoryList->SetEnableListID( 1, ItemID ); ms_CategoryIDList.push_front( ItemID ); pPropDataWnd = new CPropertyDataWindow2( m_hWndDlg, IDD_OPTIONS_DIALOG, TEXT("IDD_OPTIONS_DIALOG"), 0, iX, iY, iWidth, iHeight ); pPropDataWnd -> SetEnableListID( 5, IDC_DISABLE_THE_GENERAL_OPTIONS_PAGE, IDC_DISABLE_THE_ADVANCED_CALLING_BUTTON, IDC_DISABLE_THE_SECURITY_OPTIONS_PAGE, IDC_DISABLE_THE_AUDIO_OPTIONS_PAGE, IDC_DISABLE_THE_VIDEO_OPTIONS_PAGE ); ms_PropertyWindows[ ItemID ] = pPropDataWnd; ms_FocusList[ ItemID ] = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_DISABLE_THE_GENERAL_OPTIONS_PAGE ); pPropDataWnd -> EnableWindow( FALSE );
////////
ItemID = IDC_ONLINE_SUPPORT; m_pCategoryList->SetEnableListID( 1, ItemID ); ms_CategoryIDList.push_front( ItemID ); pPropDataWnd = new CPropertyDataWindow2( m_hWndDlg, IDD_ONLINE_SUPPORT, TEXT("IDD_ONLINE_SUPPORT"), 0, iX, iY, iWidth, iHeight ); { HWND hwndCond = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_SET_URL_FOR_INTERNAL_SUPPORT_PAGE ); pPropDataWnd -> ConnectControlsToCheck(IDC_SET_URL_FOR_INTERNAL_SUPPORT_PAGE, 2, new CControlID( hwndCond, IDC_SET_URL_FOR_INTERNAL_SUPPORT_PAGE, IDC_EDIT_SET_URL_FOR_INTERNAL_SUPPORT_PAGE, CControlID::EDIT ), new CControlID( hwndCond, IDC_SET_URL_FOR_INTERNAL_SUPPORT_PAGE, IDC_SHOW_THE_ONLINE_SUPPORT_PAGE_THE_FIRST_TIME_NETMEETING_STARTS, CControlID::CHECK ) ); } ms_PropertyWindows[ ItemID ] = pPropDataWnd; ms_FocusList[ ItemID ] = GetDlgItem( pPropDataWnd->GetHwnd(), IDC_SET_URL_FOR_INTERNAL_SUPPORT_PAGE ); pPropDataWnd -> EnableWindow( FALSE );
return TRUE; }
BOOL CSettingsSheet::_IsDataValid( void ) { // Validate FT Throughput
if( GetCategoryCheck( IDC_RESTRICT_THE_USE_OF_FILE_TRANSFER ) && GetCheckData( IDC_RESTRICT_THE_USE_OF_FILE_TRANSFER, IDC_MAXIMUM_SIZE_OF_SENT_FILES ) ) { if( 0 >= GetDlgItemInt( ms_PropertyWindows[ IDC_RESTRICT_THE_USE_OF_FILE_TRANSFER ]->GetHwnd(), IDC_EDIT_MAXIMUM_SIZE_OF_SENT_FILES, NULL, FALSE ) ) { NmrkMessageBox(MAKEINTRESOURCE(IDS_FT_THROUGHPUT_VALUE_IS_INVALID), MAKEINTRESOURCE(IDS_INVALID_DATA_ERROR), MB_OK | MB_ICONEXCLAMATION);
ShowWindow( IDC_RESTRICT_THE_USE_OF_FILE_TRANSFER, TRUE ); ms_PropertyWindows[ IDC_RESTRICT_THE_USE_OF_FILE_TRANSFER ]->SetFocus( IDC_EDIT_MAXIMUM_SIZE_OF_SENT_FILES ); return FALSE; } }
// Validate online support URL
if( GetCategoryCheck( IDC_ONLINE_SUPPORT ) && GetCheckData( IDC_ONLINE_SUPPORT, IDC_SET_URL_FOR_INTERNAL_SUPPORT_PAGE ) ) { LPTSTR sz; GetStringData( IDC_ONLINE_SUPPORT, IDC_EDIT_SET_URL_FOR_INTERNAL_SUPPORT_PAGE, &sz );
if( NULL == sz ) { delete [] sz; NmrkMessageBox(MAKEINTRESOURCE(IDS_NETMEETING_HOMEPAGE_IS_INVALID), MAKEINTRESOURCE(IDS_INVALID_DATA_ERROR), MB_OK | MB_ICONEXCLAMATION); ShowWindow( IDC_ONLINE_SUPPORT, TRUE ); ms_PropertyWindows[ IDC_ONLINE_SUPPORT ]->SetFocus( IDC_SET_URL_FOR_INTERNAL_SUPPORT_PAGE ); ms_PropertyWindows[ IDC_ONLINE_SUPPORT ]->SetFocus( IDC_EDIT_SET_URL_FOR_INTERNAL_SUPPORT_PAGE ); return FALSE; } delete [] sz; }
return TRUE; }
int CSettingsSheet::SpewToListBox( HWND hwndList, int iStartLine ) { HWND hwndCat = m_pCategoryList->GetHwnd(); map< UINT, CPropertyDataWindow2 * >::const_iterator it; for( it = ms_PropertyWindows.begin(); it != ms_PropertyWindows.end(); it++ ) { if( GetCategoryCheck( (*it).first ) ) { HWND hwndButton = GetDlgItem( hwndCat, (*it).first ); int iButtonTextLen = Button_GetTextLength( hwndButton ) + 2; LPTSTR szButtonText = new TCHAR[ iButtonTextLen ];
Button_GetText( hwndButton, szButtonText, iButtonTextLen -1 ); lstrcat( szButtonText, TEXT(":") );
ListBox_InsertString( hwndList, iStartLine, szButtonText ); iStartLine++;
iStartLine = (*it).second->Spew( hwndList, iStartLine ); } } return iStartLine; }
void CSettingsSheet::_SetButtons( void ) {
DWORD dwFlags = PSWIZB_BACK; dwFlags |= PSWIZB_NEXT; PropSheet_SetWizButtons( GetParent( m_hWndDlg ), dwFlags ); }
|